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.