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層沒法記錄日誌。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章