server_nameなしで静的IPアドレスのみを使用するnginx?


34

これは私の最初のWebアプリの展開であり、あらゆる種類の問題に直面しています。

現在、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でのみリッスンしてlisten 9050;います。同様に追加する必要があります。



やや関連
ムハンマドウメル

5

サーバーの名前 _; ワイルドカードではありません。こちらをご覧ください。

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

ip-onlyアクセスに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
「ワイルドカードではない」==「一致しない」。私は彼らがそれを手に入れると確信しています。
ジョー

2
2つは等しくありません。ワイルドカードはすべてに一致しますが、一致しないものは他に何も一致しないときに提供されます。ポイントは、ここで説明するようしかし、有用な情報が、答えは、いくつかの他のサイトにリンクされていない(ただしも、そのサイト上で提示)であるべきであるということであるここに
BE77Y

そしてポイントは、これは「良い答え」ではなく、答えだということです。すみません。あなたがそれを編集/書き直したいなら、私はあなたに完全な許可を与えます。そうでなければ、彼らは何をすべきかを正確に知っており、それは役に立ちます。自由に書き直してください。そうでなければ、答えが成り立ちます。
ジョー

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.