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;
}
}
}