nginx反向代理小结

还挺好用的,分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层没法记录日志。

原文地址:https://www.cnblogs.com/gqdw/p/15026542.html