これは私の最初の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;
}
server_name
のデフォルトは空の文字列で、これは問題ありません。完全に除外できます。
「これに名前を付けたくない」というニーズに対するもう1つの一般的なアプローチは、server_name _;
を使用することです。
ただし、http://xxx.xxx.xxx.xxx:9050
URLはこの構成では機能しません。ポート80でのみリッスンしています。listen 9050;
も追加する必要があります。
サーバーの名前 _;ワイルドカードではありませんここを参照してください:
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;
...
}
特定のホスト名なしでアプリがポート9050で応答するようにしたい場合は、server_nameをスキップできます。Nginxが最初にlistenエントリを解決し、存在する場合はserver_nameを解決するため、これは必要ありません。
server {
listen 9050;
.....
}