在 Nginx server_name I Django 中使用 IP 地址

在 Nginx server_name I Django 中使用 IP 地址

我正在使用 django、uwsgi 和 nginx。我尝试过 nginx 和 django 文档来提供静态文件。我的配置文件是:

http {


upstream django {
    server 127.0.0.1:8000;
}

server {
    listen 80;
    server_name 192.xx.xx.x;

    root /path/to/project/;


    location /static/  {
        alias /path/to/static/;
    }

    location / {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass django;

        uwsgi_param Host $host;
        uwsgi_param X-Real-IP $remote_addr;
        uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
        uwsgi_param X-Forwarded-Proto $http_x_forwarded_proto;
    }
}
}

我的配置文件是真的吗?我可以在server_name部分中使用 IP 地址吗?(IP 地址是我的机器 IP)

答案1

https://nginx.org/en/docs/http/ngx_http_core_module.html#server

基于 IP(基于 IP 地址)的虚拟服务器和基于名称(基于“Host”请求标头字段)的虚拟服务器之间没有明确的区分。相反,listen 指令描述了应接受服务器连接的所有地址和端口,而 server_name 指令列出了所有服务器名称。

关于 nginx 如何处理请求的概述可以在这里找到https://nginx.org/en/docs/http/request_processing.html,有关提供静态内容的概述可在此处找到:https://www.nginx.com/resources/admin-guide/serving-static-content/

在您的配置中我没有看到任何会阻止事情正常运行的内容 - 您是否测试过您的配置并遇到任何问题?

答案2

是的,您可以将服务器名称更改为机器 IP 地址来为 django 应用程序提供服务,额外的工作是,您必须在应用程序的 settings.py 文件中将主机变量分配为 IP 地址。

相关内容