Nginx一些错误解决办法

错误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;

 

你可能感兴趣的:(Nginx)