Avere il seguente nginx vhost config:Pagine di errore Nginx - Una regola di posizione per adattarle a tutte?
server {
listen 80;
listen 443 ssl;
server_name default;
root /var/www/default/html;
error_log /var/www/default/log/error.log;
access_log /var/www/default/log/access.log;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
autoindex on;
index index.html index.php;
location/{
try_files $uri $uri/ @php;
}
location @php {
rewrite ^/(.*)/?$ /index.php/$1 last;
}
location ~* /(?:[.]|.*[.](?:bak|fla|inc|ini|log|psd|sh|sql|swp)|(?:file|upload)s?/.*[.](?:php)) {
deny all;
}
location ~* [.](?:php) {
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_connect_timeout 30;
fastcgi_ignore_client_abort off;
fastcgi_index index.php;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_read_timeout 60;
fastcgi_send_timeout 60;
fastcgi_split_path_info ^(.+[.]php)(/.*)$;
fastcgi_temp_file_write_size 256k;
include /etc/nginx/fastcgi_params;
}
error_page 403 /403.html; location = /403.html {
root /var/www/default/error;
}
error_page 404 /404.html; location = /404.html {
root /var/www/default/error;
}
error_page 405 /405.html; location = /405.html {
root /var/www/default/error;
}
error_page 500 501 502 503 504 /5xx.html; location = /5xx.html {
root /var/www/default/error;
}
}
E 'possibile avere le 40x e 50x errori serviti da una singola regola posizione? Qualcosa di simile:
error_page 403 /403.html;
error_page 404 /404.html;
error_page 405 /405.html;
error_page 500 501 502 503 504 /5xx.html;
location ~ /(?:40[345]|5xx)[.]html$ {
root /var/www/default/error;
}
Se il suddetto, ottengo sempre gli errori di default 404 nginx. Le corrispondenze tra stringhe (senza operatore) e le corrispondenze esatte (operatore =
) funzionano, ma con l'operatore di regex sensibile al caso [in] (~[*]
) non funziona.
Suppongo che il problema sia l'ordine in cui i blocchi di posizione vengono elaborati.
Esiste comunque una soluzione per ridurre la ridondanza non necessaria root
?
Ottima soluzione. Nel caso in cui qualcuno sia totalmente nuovo a questo, si noti che è ancora necessario creare la cartella "errore" all'interno di/var/www/default – Frug
... o usare 'alias' invece di' root', e quindi i file verranno letti direttamente da '/ var/www/default /', invece di '/ var/www/default/error /'. – m4tx
Volevo un blocco server che rispondesse a tutti i nomi di server ** non ** configurati (ad esempio, per esempio, all'indirizzo IP verrà pubblicata una pagina 404). Voglio che quella pagina sia personalizzata. Ho scritto: 'ascolta 80 default_server; nome_server predefinito; ritorno 404; error_page 404 /errors/404.html; posizione^~/errors/{internal; root/var/www; } '. Ricevo ancora la pagina di errore nginx 404 di default. 'Restituisce 404;' funziona con pagine personalizzate? – Kitet