Я столкнулся с проблемой, при которой приведенная ниже конфигурация Nginx возвращает внутреннюю ошибку сервера , когда кто-то посещает URL-адрес, который не существует на сервере. Ожидаемый ответ для сервера, чтобы возвратить статус 404. Есть ли в этой конфигурации что-то, что выдаст код состояния 500, а не 404?
Примечание: (фактический домен был заменен на example.com )
- ОС: Ubuntu 18.04 LTS
- Хост: Пакет
- Nginx: 1.15.9
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;
}