web-dev-qa-db-ja.com

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

これは私の最初の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;
     }
39
bash-

server_nameのデフォルトは空の文字列で、これは問題ありません。完全に除外できます。

「これに名前を付けたくない」というニーズに対するもう1つの一般的なアプローチは、server_name _;を使用することです。

ただし、http://xxx.xxx.xxx.xxx:9050 URLはこの構成では機能しません。ポート80でのみリッスンしています。listen 9050;も追加する必要があります。

33
Shane Madden

サーバーの名前 _;ワイルドカードではありませんここを参照してください:

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;
    ... 
    }
6
Joe

特定のホスト名なしでアプリがポート9050で応答するようにしたい場合は、server_nameをスキップできます。Nginxが最初にlistenエントリを解決し、存在する場合はserver_nameを解決するため、これは必要ありません。

server {
   listen 9050;

   .....
}

詳細はこちら: Nginx server_name and how it works

4
gansbrest