没有 server_name 并且仅使用静态 IP 地址的 nginx?

没有 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;
     }

答案1

server_name默认为空字符串,这很好;您可以完全排除它。

对于“我不想给这个起名字”的需求,另一种常见的方法是使用server_name _;

但是,您的URL 不适用于此配置;您只监听端口 80。您还http://xxx.xxx.xxx.xxx:9050需要添加。listen 9050;

答案2

server_name _; 不是通配符请参见此处:

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

只需指定 default_server 指令即可进行 ip 访问(请参阅http://nginx.org/en/docs/http/request_processing.html

server {
    listen 1.2.3.4:80 default_server;
    ... 
    }

答案3

如果你希望你的应用程序在端口 9050 上响应而不需要特定的主机名,那么你可以跳过 server_name,这不是必需的,因为 Nginx 首先解析监听条目,然后解析 server_name(如果存在):

server {
   listen 9050;

   .....
}

更多详情请点击这里:Nginx server_name 及其工作原理

答案4

server_name "";

工作服务器没有域名。请注意 - 不要忘记使用正确的协议)

相关内容