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/,要同时跑 blog 和 www 两个站点:
- 在
/var/www/下新建blog、www两个目录; - 编辑
/etc/nginx/nginx.conf,确保http块里有include /etc/nginx/conf.d/*.conf;(把各站点拆成独立 conf); - 在
/etc/nginx/conf.d/下新建blog.conf、www.conf(文件名自定义),每个文件一个server块,server_name与root一一对应; - 每个
server块里正常配location /、index、error_page等; nginx -s reload重启;- 本地调试可在
/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/;
}
}
相关阅读
- 《Nginx配置404自定义页面》(/2020/08/14654.html)
- 《nginx server中的root和location的root的区别》(/2022/05/64525.html)
- 《nginx配置多站点》(/2020/08/18457.html)