Nginx 403 forbidden

本文详细介绍了在Linux系统中Nginx遇到403错误的四种可能原因,包括权限问题、启动用户与工作用户不一致、部分接口配置问题以及代理设置。提供了相应的解决方法和配置示例。
摘要由CSDN通过智能技术生成

1、没有权限问题

         Linux系统中如果Nginx没有web目录的操作权限,也会出现403错误。解决办法:修改web目录的读写权限,或者是把Nginx的启动用户改成目录的所属用户,重启Nginx即可解决。(windows 下则用管理员启动nginx即可)。

 chmod -R 777 /data
 chmod -R 777 /data/www/

2、由于Nginx启动用户和Nginx工作用户不一致所致

Linux 查看Nginx的启动用户,发现是nobody,而为是用root启动的(windows一般不存在)

# 查看Nginx的运行进程
ps aux | grep nginx

如下图:

 将nginx.config的user改为和启动用户一致。

vim ./nginx.config

3、部分连接访问出现403错误

Nginx 配置服务转发,部分接口出现403错误,我只是做服务器请求地址转发所以根本不存在跨域,猜想是NGINX将请求信息改变了导致无法正常访问,F12查看错误的请求接口中不存在 Content-Type:application/x-www-form-urlencoded,由于某些请求没有用form-data jquery默认就没有Content-Type, Nginx代理修改了你的request-header,修改配置如下

# nginx代理配置
location /cbda-module-common-authority {
     #不更改请求头信息,其他多余参数全部去掉
     proxy_set_header Host $http_host; #nginx1.20.1版本可用此配置  
     #proxy_set_header Host $host; #如果是nginx1.18.0使用
     proxy_pass http://gatewayservers;
}

4、完整配置如下


user  root; #设置用户
worker_processes  4; # 设置进程数
worker_cpu_affinity auto; #设置进程自动绑定cpu
worker_rlimit_nofile 65535; #设置访问文件的句柄数

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;

events {
    worker_connections  10240;
    multi_accept on;
    use epoll;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  /soft/service/nginx_1.18.0/nginx-1.18.0-install/logs/access.log  main;
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;
    tcp_nodelay on;
    open_file_cache max=102400 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 1;
    client_header_timeout 30;
    client_body_timeout 30;
    reset_timedout_connection on;
    send_timeout 30;
    server_tokens off;
    client_header_buffer_size 1m;
    large_client_header_buffers 4 1m;
    client_body_buffer_size 300m;
    client_body_temp_path /usr/local/service/nginx-1.20.1/client_body_temp;
    #add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
    gzip on;   #表示开启压缩功能
    gzip_min_length 2k;  #表示允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,默认值为0,表示不管页面多大都进行压缩,设置建议设大于1k。如果小于1k可能会越压越大。
    gzip_buffers 4 5m; #压缩缓存区大小
    gzip_http_version 1.1; #压缩版本
    gzip_comp_level 6; #压缩比率,一般选择4-6,为了性能gzip_typs text/css text/xml application/javascript; #指>定压缩的类型 gzip_vary on; #vary header支持;
    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript  application/xml  application/x-httpd-php image/jpeg image/gif image/png image/icon image/jpg;
    gzip_vary on; #varyheader支持,改选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过nginx压缩的数据。
   
    upstream gatewayservers {
    	server 192.168.66.142:30858;
    }

    server {
        listen       30857;
        server_name  localhost;
        charset utf-8;
        #access_log  /soft/service/nginx_1.18.0/nginx-1.18.0-install/logs/host.access.log  main;
        location / {
            root   /usr/local/service/issue-management-1.0/cbdacim-vue-ui/dist;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        location /cbda-module-common-authority {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header Host $http_host;
            proxy_set_header accept-encodeing 'gzip, deflate';
            #proxy_set_header content-type 'application/json';
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header authorization $http_authorization;
            proxy_set_header accept '*/*';
            proxy_set_header x-bce-date $http_x_bce_date;
            proxy_connect_timeout 300;
            proxy_send_timeout 300;
            proxy_read_timeout 300;
            client_max_body_size	300m;
            proxy_pass http://gatewayservers;
        }
        
    #静态资源缓存过期设置
    #location ~* \.(ico|jpeg|gif|png|bmp|swf|flv)$ {
	    #expires 30d;  #过期时间为30天
	    #log_not_found off;
	    #access_log off;
	#}
	#location ~* \.(js|css)$ {
	    #expires 7d;
	    #log_not_found off;
        #access_log off;
	#}
		
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

        
    }


	
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值