nginx配置详解
·
服务代理配置/api与/api/ 的区别
访问路径都为http://127.0.0.1:82/api/info
location /api/ {
proxy_pass http://127.0.0.1:82;
}
# 代理后的路径为http://127.0.0.1:82/api/info
location /api/ {
proxy_pass http://127.0.0.1:82/;
}
# 代理后的路径为http://127.0.0.1:82/info
proxy_pass http://127.0.0.1:82 没有后缀/ 会拼接代理前缀
proxy_pass http://127.0.0.1:82/ 有后缀/ 会舍弃代理前缀
独立的两个应用,同一个端口
- nginx的安装路径为: /opt/nginx
- 项目都在html下
- 项目A名称为: project1
- 项目B名称为: project2
- 监听端口都为82,在同一个server下
页面代理配置
location /api {
root html/project1;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
# 可以访问路径为: http://127.0.0.1:82/api
location /apa {
alias html/project2;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
# 可以访问路径为: http://127.0.0.1:82/apa
一个server模块下,不能有两个location 中 都为root 配置文件夹
但是可以有多个alias,alias 与 root功能相同,都是规定文件夹指向
这里用了一个root 一个 alias
独立的两个应用,不同端口
- nginx的安装路径为: /opt/nginx
- 项目都在html下
- 项目A名称为: project1
- 项目B名称为: project2
- 项目A监听端口都为82
- 项目A监听端口都为83
- 用两个server模块配置
页面代理配置
server {
listen 82;
server_name localhost;
location / {
root html/project1;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
server {
listen 83;
server_name localhost;
location / {
root html/project2;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
由于是不同的server ,所以用root 或者 alias 没有任何区别
子文件夹的两个应用,同一个端口
- nginx的安装路径为: /opt/nginx
- 项目A名称为: project1
- 项目B名称为: project2
- 监听端口为82
- 项目A路径为html
- 项目B路径为html/test1
页面代理配置1
server {
listen 82;
server_name localhost;
location / {
root html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api {
root html/test1;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
页面代理配置2
server {
listen 82;
server_name localhost;
location / {
root html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://127.0.0.1:89/;
}
}
server {
listen 89;
server_name localhost;
location / {
root html/test1;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
常用的nginx 超全配置
location /api/ {
proxy_pass http://127.0.0.1:8080/user/;
# ===== 核心流式配置 =====
# 1. 完全关闭所有缓冲(最关键)
proxy_buffering off;
proxy_request_buffering off;
proxy_cache off;
# 2. 禁用nginx内部缓冲机制
proxy_set_header X-Accel-Buffering no;
# 3. HTTP/1.1 + 长连接支持
proxy_http_version 1.1;
proxy_set_header Connection "";
# ===== 编码和传输设置 =====
# 4. 禁用压缩(压缩会导致缓冲)
gzip off;
proxy_set_header Accept-Encoding "";
# 5. 支持分块传输
chunked_transfer_encoding on;
# ===== 超时配置 =====
# 6. 流式长连接超时(根据实际需求调整)
proxy_connect_timeout 60s;
proxy_read_timeout 10m; # 10分钟,可根据实际情况调整
proxy_send_timeout 10m;
send_timeout 10m;
# ===== TCP优化 =====
# 7. TCP即时传输优化
tcp_nodelay on; # 禁用Nagle算法,立即发送小包
tcp_nopush off; # 禁用TCP_CORK,避免等待数据积累
# ===== 标准代理头 =====
# 8. 转发客户端信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# ===== 错误处理 =====
# 9. 流式响应错误处理
proxy_ignore_client_abort off; # 客户端断开时终止后端请求
proxy_intercept_errors off;
# ===== 客户端配置 =====
# 10. 客户端请求体配置
client_max_body_size 10m; # 根据实际需求调整
client_body_buffer_size 128k;
proxy_buffer_size 1k;
proxy_busy_buffers_size 1k;
}
更多推荐


所有评论(0)