server_name이없고 정적 IP 주소 만 사용하는 nginx?


34

이것은 첫 번째 웹 응용 프로그램 배포이며 모든 종류의 문제가 발생합니다.

현재 Django 앱의 nginx + gunicorn 구현을 시도하고 있지만 대부분이 질문은 nginx 구성과 관련이 있습니다. 일부 상황에서-nginx는 gunicorn 로컬 서버에 대한 연결 및 프록시를 수신합니다.

nginx 구성에서 제공해야한다고 말하는 곳은 server_name무엇입니까? 네트워크의 외부 IP (정적)와 수신 할 포트 번호를 통해 어떤 종류의 도메인 이름도 사용할 계획이 없습니다.

내가 원하는 것은 내가 사이트에 접근 할 수있는 것과 같은 것에 접근 할 때 http://xxx.xxx.xxx.xxx:9050이다.

다음은 참조 용으로 구성 할 샘플 코드입니다.

   server {
        listen   80;
        server_name WHAT TO PUT HERE?;

    root /path/to/test/hello;

    location /media/ {
        # if asset versioning is used
        if ($query_string) {
            expires max;
        }
    }
    location /admin/media/ {
        # this changes depending on your python version
        root /path/to/test/lib/python2.6/site-packages/django/contrib;
    }
    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8000/;
    }
        # what to serve if upstream is not available or crashes
        error_page 500 502 503 504 /media/50x.html;
     }

답변:


31

server_name기본값은 빈 문자열이며 괜찮습니다. 완전히 제외 할 수 있습니다.

"나는 이것에 이름을 붙이고 싶지 않다"필요에 대한 또 다른 일반적인 접근법은 server_name _;

귀하의 http://xxx.xxx.xxx.xxx:9050URL이 설정,하지만 작동하지 않습니다; 포트 80 만 듣고 있습니다. 또한 포트 80을 추가해야합니다 listen 9050;.



다소 관련
Muhammad Umer

5

서버 이름 _; 와일드 카드가 아닙니다. 여기를 참조하십시오.

http://blog.gahooa.com/2013/08/21/nginx-how-to-specify-a-default-server

IP 전용 액세스를 위해 default_server 지시문 만 지정하십시오 ( http://nginx.org/en/docs/http/request_processing.html 참조 ).

server {
    listen 1.2.3.4:80 default_server;
    ... 
    }

2
유용한 정보에 간단히 연결하고 답변에 포함시키지 않는 것이 좋습니다.이 경우에는 server_name _;일치하지 않습니다.
BE77Y

1
"와일드 카드가 아닙니다"== "일치하지 않습니다". 나는 그들이 그것을 얻을 것이라고 확신합니다.
Joe

2
둘은 같지 않습니다. 일치하지 않는 것은 다른 것이 일치하지 않을 때 제공되는 반면, 와일드 카드는 모든 것이 일치합니다. 요점은 여기 그러나 자세히 설명 유용한 정보가, 대답, 다른 사이트에 연결되지 않은 (그러나 물론 해당 사이트에 표시)에 있어야한다는 것입니다 여기에
BE77Y

그리고 요점은 이것이 '좋은 대답'이 아니라 대답이라는 것입니다. 시간이 없어서 미안 당신이 그것을 편집 / 다시 작성하려면, 나는 당신에게 모든 권한을 부여합니다. 그렇지 않으면, 그들은 무엇을해야하는지 정확히 알 것이며 도움이됩니다. 자유롭게 다시 쓰십시오. 그렇지 않으면 답이 나타납니다.
Joe

3
관련 정보가 포함 된 추가 줄을 포함 할 '시간이 없다'면 3 년 전 게시물에 답변을하도록 귀찮게 한 이유를 모르겠습니다.
BE77Y

4

앱이 특정 호스트 이름없이 포트 9050에서 응답하도록하려면 server_name을 건너 뛸 수 있습니다 .Nginx가 먼저 수신 항목을 확인한 다음 server_name이있는 경우 필요하지 않습니다.

server {
   listen 9050;

   .....
}

자세한 내용은 여기 : Nginx server_name 및 작동 방식

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.