Ubuntu

沒有 server_name 並且只使用靜態 IP 地址的 nginx?

  • April 15, 2017

這是我的第一個 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:9050URL 不適用於此配置;您只在埠 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;
   ... 
   }

引用自:https://serverfault.com/questions/351559