我正在使用 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 地址。