作者:wojijola; | 来源:互联网 | 2023-05-18 11:31
目录1.7层代理2.4层代理3.4层7层异同还挺好用的,分2种,一种是原本支持的7层代理,http或者https,另一种是后面支持的tcp,udp代理1.7层代理主要是这个http
目录
还挺好用的,分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层没法记录日志。