Сводка проблем nginx 403

задняя часть Nginx

1. Нет проблем с разрешением

В системе Linux, если nginx не имеет разрешения на работу с веб-каталогом, также возникает ошибка 403. Решение: измените разрешения на чтение и запись веб-каталога или измените пользователя запуска nginx на пользователя каталога и перезапустите Nginx, чтобы решить проблему. (windows 下则用管理员启动nginx即可)

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

2. Из-за несоответствия между стартовым пользователем и рабочим пользователем nginx

linux 查看nginx的启动用户,发现是nobody,而为是用root启动的(Windows вообще не существует)

ps aux | grep "nginx: worker process" | awk'{print $1}'

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

vi conf/nginx.conf

在这里插入图片描述

3. Ошибка 403 возникает при некоторых подключениях

nginx настраивает перенаправление сервисов, а на некоторых интерфейсах ошибка 403. Я просто пробрасываю адрес запроса сервера, поэтому междоменного нет вообще. Я предполагаю, что NGINX изменил информацию запроса и не может нормально получить к нему доступ. F12 проверяет, что неправильный интерфейс запроса не существует.Content-Type:application/x-www-form-urlencoded, поскольку некоторые запросы не используют данные формы. jquery не имеет Content-Type по умолчанию, прокси-сервер nginx изменяет ваш заголовок запроса, измените конфигурацию следующим образом.

	#nginx代理配置
	location /hello{
	    proxy_pass http://192.168.0.100:8088/adminPage;
	    #不更改请求头信息,其他多余参数全部去掉
	    proxy_set_header Host $http_host;
	  }

4. Полная конфигурация выглядит следующим образом.


#user  nobody;#配置用户或者用户组,默认为nobody
worker_processes  1;#允许生成的进程数,默认为1

#制定日志路径,级别。这个设置可以放入全局块,http块,server块,
#级别以此为:debug|info|notice|warn|error|crit|alert|emerg
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;#指定nginx进程运行文件存放地址

events {
    worker_connections  1024;    #最大连接数,默认为512
    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
}


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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
	  
   
	 upstream tomcat {
        server 192.168.0.100:8088;
     }
	 
    server {
        listen       919;
        server_name  222.221.120.152;
	#header name含下划线
	underscores_in_headers on; 
	charset utf-8; # 编码设置
	#开启gzip压缩
        #gzip模块设置
        gzip on; #开启gzip压缩输出
        gzip_min_length 1k; #最小压缩文件大小
        gzip_buffers 4 16k; #压缩缓冲区
        gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
        gzip_comp_level 2; #压缩等级
        gzip_types text/plain application/x-javascript text/css application/xml;
        #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
        gzip_vary on;

        #charset koi8-r;
	    #charset utf-8,gbk; # 避免中文乱码
        #root    D:/senta/dist; 

        #access_log  logs/host.access.log  main;
	
	 location / {
             #这个地方指定被访问的文件夹位置
            root  D:/htmlPage/;
            index  index.html index.htm;
		    try_files  $uri $uri/ /index.html;
		    #limit_rate 1280k; #限制速度
		    client_max_body_size  100M;
		    allow all;
            autoindex on;
		    proxy_set_header X-Real-IP  $remote_addr;
		    proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            add_header 'Access-Control-Allow-Headers' 'Content-Type';
            add_header 'Access-Control-Allow-Methods' 'GET';
            add_header 'Access-Control-Allow-Methods' 'POST';
            add_header 'Access-Control-Allow-Methods' 'DELETE';
			add_header 'Access-Control-Allow-Methods' 'PUT';
			add_header 'Access-Control-Allow-Credentials' 'true';
			add_header 'Access-Control-Allow-Origin' '*';
			proxy_connect_timeout       600s;
            proxy_read_timeout          600s;
            proxy_send_timeout          600s; 
            access_log off;
			break;
        }		
		
		#nginx代理配置
	location /hello{
			proxy_pass http://tomcat/adminPage;
			proxy_set_header Host $http_host; 
		}
		
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}