Ubuntu
沒有 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; }
server_name
預設為空字元串,這很好;你可以完全排除它。“我不想為此命名”需要的另一種常見方法是使用
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; ... }