還挺好用的,分2種,一種是原本支持的7層代理,http或者https ,另一種是後面支持的tcp,udp代理
1. 7層代理
主要是這個 https://nginx.org/en/docs/http/ngx_http_proxy_module.html
location / {
proxy_pass http://localhost:8000;
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-For $proxy_add_x_forwarded_for; 獲取用戶真實ip
https的話
server{
listen 443 ssl;
server_name example.cn;
ssl_certificate a.crt;
ssl_certificate_key a.key;
location / {
proxy_pass https://abc.om;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
包在一個server塊中 。當然還有一些很多參數可以調。
2. 4層代理
https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
server {
listen 127.0.0.1:12345;
proxy_pass 127.0.0.1:8080;
}
server {
listen 12345;
proxy_connect_timeout 1s;
proxy_timeout 1m;
proxy_pass example.com:12345;
}
server {
listen 53 udp reuseport;
proxy_timeout 20s;
proxy_pass dns.example.com:53;
}
server {
listen [::1]:12345;
proxy_pass unix:/tmp/stream.socket;
}
官網的幾個例子,但是要包在stream塊中
stream{
server {
listen 127.0.0.1:12345;
proxy_pass 127.0.0.1:8080;
}
}
4層支持證書,功能還是比較強大。
3. 4層7層異同
基本上大部分應用都是基於7層的,可以做多域名代理,如果4層,只能通過端口來轉發不通的服務了。用7層有日誌,4層沒法記錄日誌。