错误1: 配置了Nginx,但是打开页面是乱码。
解决办法如下:
# 在你个人的sever端添加如下2行
default_type ‘text/html’; #设置内容输出内容型为 html htm shtml 三种类型
charset utf-8; #设置字符集为 uft-8
示例:
server {
listen 80;
server_name xxx;
......
default_type ‘text/html’;
charset utf-8;
....
}
#重启Nginx
nginx -t
nginx -s reload
为什么不直接写在 http { } 段了?而是写在server段了?
在服务器操作上,一般情况自己只需要对自己的操作进修改即可。当有多个虚拟主机共存时候,你不知道你同事配置的虚拟机主机是不是需要指定字符集,去问他又耽搁大家的时间,还不如只对自己的操作部分做修改,减少不必要的沟通,除非是只修改自己的部份操作解决不了问题在来跟同事商谈。
错误2:访问Nginx软连接资源是403
原因:nginx 403代表 服务器已经接收到请求,但是拒绝处理。什么情况下拒绝处理了?一般是Nginx的运行用户对你访问的资源没有权限,所以才会返回403(针对某请求特定返回403的情况这里不论)
解决办法:
我的配置:
cat /usr/local/nginx/conf/vhost/del.conf
server {
listen 80;
server_name xxxx;
root /data/www/download;
}
$ ll /data/www/download/
总用量 0
lrwxrwxrwx 1 www www 30 7月 3 16:50 delete -> /opt/scripts/myscripts/delete/
注:/data/www/download/ 下的delete就是我们软连接。可以看到他是www权限的,按逻辑是可以正常访问的,实际偏偏就是403.
我们在客户端发起访问: curl -vI xxxx/delete/ 实际在服务器访问的是 /opt/scripts/myscripts/delete/ 这个文件夹
解决办法:你得看看 /opt/scripts/myscripts/ 有没有www用户权限,
我的是因为 /opt/scripts/myscripts/ 这个目录是属于root用户的,www用户没有权限访问
最终解决方法:
chown www.www -R /opt/scripts/myscripts/
nginx -t
nginx -s reload
错误3:Nginx配置了error_page,但是没有跳转
我们做web运维的经常有个需求就是将访问的某个状态跳转到固定的页面,比如用户访问是404时,就跳转到我们指定页面。
示例:
upstream test_server {
server 192.168.0.2 max_fails=5 fail_timeout=30;
}
server {
......
error_page 404 = @test_server;
location @test_server {
include proxy.conf;
proxy_pass https://dianlut_old_server;
}
}
但是你配置好了之后,真正进行测试的时候,发现打开的404还是没法跳转到192.168.0.2上。怎么办了?
一般情况下,是你的Nginx没有开启 proxy_intercept_errors 指令。
具体操作:
server {
......
proxy_intercept_errors on;
error_page 404 = @test_server;
location @test_server {
include proxy.conf;
proxy_pass https://dianlut_old_server;
}
}
注:如果你要进行多次转发的还可以考虑下这个参数 recursive_error_pages on;