将 nginx 位置与不同名称的 HTML 文件一起使用
Using nginx location with differently named HTML files
我想要 www.example.com/select 到 return 文件 /srv/www/example/static/html/select.html
我的 example.conf 设置如下,但它不起作用
server {
server_name mywebsite.com www.mywebsite.com;
root /srv/www/mywebsite/static;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location = / {
index html/index.html;
}
location = /select {
index html/select.html;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
虽然 index.html 是 returned,尝试获取 /select 将记录此错误
2018/04/28 08:16:59 [error] 17160#17160: *43106 open() "/srv/www/mywebsite/static/select" failed (2: No such file or directory)
我应该如何配置我的 nginx 以获得所需的结果?
index
指令对以 /
结尾的 URI 进行操作,因此在这种情况下不起作用。有关详细信息,请参阅 this document。
如果你只有一个URI,你可以使用:
location = /select {
rewrite ^ /html/select.html last;
}
您是否有理由将 /html/
后缀从 root
值中删除?更通用的解决方案可能是:
root /srv/www/mywebsite/static/html;
location / {
try_files $uri $uri/ $uri.html =404;
}
详情见this document。
我想要 www.example.com/select 到 return 文件 /srv/www/example/static/html/select.html 我的 example.conf 设置如下,但它不起作用
server {
server_name mywebsite.com www.mywebsite.com;
root /srv/www/mywebsite/static;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location = / {
index html/index.html;
}
location = /select {
index html/select.html;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
虽然 index.html 是 returned,尝试获取 /select 将记录此错误
2018/04/28 08:16:59 [error] 17160#17160: *43106 open() "/srv/www/mywebsite/static/select" failed (2: No such file or directory)
我应该如何配置我的 nginx 以获得所需的结果?
index
指令对以 /
结尾的 URI 进行操作,因此在这种情况下不起作用。有关详细信息,请参阅 this document。
如果你只有一个URI,你可以使用:
location = /select {
rewrite ^ /html/select.html last;
}
您是否有理由将 /html/
后缀从 root
值中删除?更通用的解决方案可能是:
root /srv/www/mywebsite/static/html;
location / {
try_files $uri $uri/ $uri.html =404;
}
详情见this document。