Nginx代理与转发

代理

1
2
3
4
5
location / {
proxy_pass http://127.0.0.1:7879;
# 设置x-forwarded-for 可以获取原始请求ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

转发

1
2
3
location / {
rewrite \$scheme://www.xxx.com\$request_uri
}

socket代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# http部分
map $http_upgrade $connection_upgrade {
default upgrade;
” close;
}

upstream inner.socket {
server 192.168.1.4:3000; #转发ip及端口
}

# server部分
location ^~ /socket {
proxy_pass inner.socket; #转到upstream的inner.socket
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; #协议升级
proxy_set_header Connection “upgrade”; #协议升级
}

动态代理

1
2
3
4
5
6
#使用正则匹配路由获取参数
location ~* ^/xxxx(\d+)/(.+)$ {
proxy_pass http://12.12.12.12:$1/$2?$args; #获取动态的端口及url参数
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header X_PARMAS; #传递自定义请求头参数
}

SSH代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# http部分
stream {
upstream ssh {
hash $remote_addr consistent;
server 192.168.1.3:22; #远程服务器ip及端口
}

#里面可以有多个监听服务,配置监听端口和代理的ip和端口就可以进行tcp代理了。
server {
listen 24; # 默认端口
proxy_pass ssh; #转发到upstream的ssh
proxy_connect_timeout 20s;
proxy_timeout 5m;
}
}

代理动态ip服务器的一种方法
nginx配置引入单独的server配置文件,由外部脚本(如php脚本)维护其中内容。当ip改变时去变更server配置的ip,并让nginx服务器重新加载配置。


Nginx代理与转发
https://www.goozoe.com/posts/50985.html
作者
一起吃西瓜
发布于
2019年12月5日
许可协议