我通过nginx配置静态网站,并在conf.d目录下包含我的设置。听口80.
但是我发现当我请求网址时,nginx总是重定向默认网页/usr/share/nginx/html/index.html
我的配置似乎有效,因为所有访问日志都写入我的访问日志设置,如果我将index.html更改为我的目录中的其他名称(例如i.html),请求url mysite.com/ i.html,我可以访问正确的页面。
因此,似乎nginx将所有index.html重定向到默认值。
我尝试更改默认端口/服务器名称/ root并注释默认设置,甚至关闭selinux,以上所有都不起作用,这真让我发疯。
任何人都可以帮助我吗?
我在CentOS 7.2上使用nginx版本1.10.2
以下是我的网站设置:
# the upstream component nginx needs to connect to
upstream blog {
server 0.0.0.0:80; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
# the port your site will be served on
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
# the domain name it will serve for
server_name mysite.com;
charset utf-8;
access_log /var/log/blog/access.log;
error_log /var/log/blog/error.log;
# max upload size
client_max_body_size 75M; # adjust to taste
# Finally, send all non-media requests to the Django server.
location / { try_files $uri @blog; }
location @blog{
root /home/work/projects/blog/public/;
index index.html index.htm;
uwsgi_read_timeout 120s;
uwsgi_send_timeout 120s;
}
}
和/etc/nginx/nginx.conf是
server {
# listen 8000 default_server;
# listen [::]:8000 default_server;
# server_name not;
# root /usr/share/nginx/html;
# Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
# location / {
# }
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
答案 0 :(得分:1)
这没有任何意义:
location / {
try_files $uri @blog;
}
location @blog{
root /home/work/projects/blog/public/;
index index.html index.htm;
uwsgi_read_timeout 120s;
uwsgi_send_timeout 120s;
}
缺少root
指令意味着第一个try_files
将在默认位置查找文件。
您需要的只是root
上下文中的index
和server
指令:
例如:
root /home/work/projects/blog/public;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
有关详细信息,请参阅this document。