Nginx 配置速查


1. 自定义 404 / 403 错误页

nginx.conf 的 http 区域先开启错误拦截,再在 server 里用 error_page 指向自定义页面:

http {
    fastcgi_intercept_errors on;
}

server {
    listen 80;
    server_name  blog.mingxuan.tech;
    root         /root/blog;

    error_page 404 /404.html;
    location = /404.html {
        root /home/www/root/;   # 在此目录下放置自定义 404.html
    }

    error_page 403 /403.html;
    location = /403.html {
        root /usr/website/errors/;
    }
}

改完用 nginx -s reload(或 restart)使配置生效。

2. server root 与 location root 的就近原则

root 可以写在 server 块或 location 块。访问匹配到某个 location 时,该 location 的 root 优先生效(就近原则);只有没有任何 location 匹配到时,才回退到 server 的 root。

server {
    listen       80;
    server_name  www.mingxuan.tech mingxuan.tech;
    root        /usr/website/www;   # 不生效(被下面的 location 覆盖)

    location / {
        root        /usr/website/blog;  # 生效
        index index.html index.aspx index.php index.htm;
    }
}

记住一句话:location 里的 root 离请求更近,优先级更高。

3. 多站点部署

假设网站根目录在 /var/www/,要同时跑 blogwww 两个站点:

  1. /var/www/ 下新建 blogwww 两个目录;
  2. 编辑 /etc/nginx/nginx.conf,确保 http 块里有 include /etc/nginx/conf.d/*.conf;(把各站点拆成独立 conf);
  3. /etc/nginx/conf.d/ 下新建 blog.confwww.conf(文件名自定义),每个文件一个 server 块,server_nameroot 一一对应
  4. 每个 server 块里正常配 location /indexerror_page 等;
  5. nginx -s reload 重启;
  6. 本地调试可在 /etc/hosts 里把域名指到 127.0.0.1
server {
    listen       80;
    server_name  www.mingxuan.tech mingxuan.tech;  # 按站点改
    root        /usr/website/www;                  # 按站点改

    location / {
        index  index.php index.html index.htm;
    }

    error_page 404 /404.html;
    location = /404.html {
        root   /usr/website/errors/;
    }
    error_page 403 /403.html;
    location = /403.html {
        root   /usr/website/errors/;
    }
}

相关阅读


文章作者: 弈心
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 弈心 !
评论
  目录