当前位置:   article > 正文

记录一次Nginx关于404页面重定向的解决方案

记录一次Nginx关于404页面重定向的解决方案

前情提要

本地环境配置:

环境版本号
PHP7.3.6
Nginx1.17.0

闲来无事,折腾了一下本地环境,突然想到应该要搞一个404页面让网站显得专业一点(看起来牛批一点),开始Google:Nginx该如何配置自己的404页面。好的,以下是试验过后的解决方案:

这里先贴一下nginx.conf来避免以后遗忘:

  1. worker_processes 4;
  2. events {
  3. worker_connections 1024;
  4. }
  5. http {
  6. include mime.types;
  7. default_type application/octet-stream;
  8. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  9. '$status $body_bytes_sent "$http_referer" '
  10. '"$http_user_agent" "$http_x_forwarded_for"';
  11. sendfile on;
  12. keepalive_timeout 65;
  13. client_max_body_size 100m;
  14. gzip on;
  15. include vhost/*.conf;
  16. upstream fastcgi_proxy {
  17. server 127.0.0.1:9000;
  18. server 127.0.0.1:9001;
  19. }
  20. }

其中很重要的一句配置是include vhost/*.conf;,它表示“nginx服务器将寻找vhost目录下后缀为.conf的文件并包含在nginx.conf配置文件中”。通常用来配置虚拟服务,一个文件只包含一个server块,以保持其独立性,也避免nginx.conf配置文件过长以至于不清晰的问题。

现在开始配置404页面。先上一个普通虚拟站点的server配置:

  1. server {
  2. listen 80;# 监听端口:一般是80
  3. server_name front;# 虚拟域名:配置后重启Nginx服务器,在浏览器输入 http://front 即可访问在 root 目录下的站点
  4. root E:/rep/front;# 网站根目录
  5. charset utf-8;
  6. location / {
  7. index index.html index.php;
  8. }
  9. # 开启PHP-CGI解析
  10. location ~ \.php$ {
  11. fastcgi_pass 127.0.0.1:9000;
  12. fastcgi_index index.php;
  13. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  14. include fastcgi_params;
  15. }
  16. }

然后开始配置404页面:

开启Nginx的fastcgi_intercept_errors错误自定义选项

这个配置可以在http块开启,也可以在serverlocation块开启。为了便于区分,笔者将其开启在server块,使每个服务器都有其独有的404页面。

server块中添加如下代码:

    fastcgi_intercept_errors on;# 开启支持错误自定义

自定义404页面的位置

在网站根目录找个合适的位置存放404.html文件,笔者这里是/page/404.html。然后在server块继续添加以下代码:

  1. error_page 404 /page/404.html;
  2. location = /page/404.html {
  3. root E:/rep/front;
  4. }

不要忘记添加该位置页面的root定义。类似的还可以添加状态码为500502503504重定向的页面,完整的server块配置如下:

  1. server {
  2. listen 80;
  3. server_name front;
  4. root E:/rep/front;
  5. charset utf-8;
  6. location / {
  7. index index.html index.php;
  8. }
  9. fastcgi_intercept_errors on;# 开启支持错误自定义
  10. error_page 404 /page/404.html;
  11. location = /page/404.html {
  12. root E:/rep/front;
  13. }
  14. error_page 500 502 503 504 /page/50x.html;
  15. location = /page/500.html {
  16. root E:/rep/front;
  17. }
  18. # 开启PHP-CGI解析
  19. location ~ \.php$ {
  20. fastcgi_pass 127.0.0.1:9000;
  21. fastcgi_index index.php;
  22. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  23. include fastcgi_params;
  24. }
  25. }

重启Nginx服务器,在浏览器的地址栏输入:http://front/jdsahjadjsaldjadsa(确保该域名已加入host文件),可以看到你定义的404界面:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>404</title>
  6. </head>
  7. <body>
  8. <h1>404</h1>
  9. </body>
  10. </html>

404界面


大功告成!但一个好看的站点404页面也一定是好看的,可以在网上寻找相关的资源,以后有空补链接。

转载于:https://www.cnblogs.com/linnzh/p/11549768.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/638099
推荐阅读
相关标签
  

闽ICP备14008679号