Ubuntu 我的Nginx配置是500个内部服务器错误的罪魁祸首吗?
我遇到了一个问题,当有人访问服务器上不存在的URL时,下面的Nginx配置返回一个内部服务器错误。预期的响应是服务器返回404状态。在这个配置中是否有某种东西会产生500而不是404的状态代码 注:(实际域已替换为example.com)Ubuntu 我的Nginx配置是500个内部服务器错误的罪魁祸首吗?,ubuntu,nginx,nginx-config,Ubuntu,Nginx,Nginx Config,我遇到了一个问题,当有人访问服务器上不存在的URL时,下面的Nginx配置返回一个内部服务器错误。预期的响应是服务器返回404状态。在这个配置中是否有某种东西会产生500而不是404的状态代码 注:(实际域已替换为example.com) 操作系统:Ubuntu 18.04 LTS 主机:数据包 Nginx:1.15.9 您应该检查错误日志以了解5xx错误的原因,但是您的try\u files语句正在生成重定向循环。您将URI重写为$URI.php,但不支持php脚本。感谢@RichardS
- 操作系统:Ubuntu 18.04 LTS
- 主机:数据包
- Nginx:1.15.9
您应该检查错误日志以了解5xx错误的原因,但是您的
try\u files
语句正在生成重定向循环。您将URI重写为$URI.php
,但不支持php脚本。感谢@RichardSmith发现循环。不幸的是,这并不是服务器错误的罪魁祸首,日志也没有提供这些信息。
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.example.com;
root /srv/www/example.com/pub;
index index.html index.php;
access_log /srv/www/example.com/log/access.log;
error_log /srv/www/example.com/log/error.log info;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.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 Certbo
location / {
#if ($request_uri ~ ^/(.*)\.html$) { return 301 /$1; }
try_files $uri $uri/ $uri.html $uri.php?$args;
}
location = / {expires max;}
location ~* \.(?:ico|asf|asx|wax|wmv|wmx|avi|bmp|class|css|divx|doc|docx|exe|eot|ttf|ttc|otf|woff|woff2|mp4|ogg|ogv|webm|gif|gz|gzip|htc|ico|jpeg|jpg|png|js|mdb|mid|mi)$ {
expires 1y;
add_header "Access-Control-Allow-Origin" "*";
add_header Cache-Control "public";
}
}
# Redirect http to https
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
# Redirect www to non-www
server {
listen 443;
listen [::]:443;
server_name example.com;
return 301 https://www.example.com$request_uri;
}