1、概述
nginx的正向代理,只能代理http、tcp等,不能代理https請求。有很多人不是很理解具體什么是nginx的正向代理、什么是反向代理。下面結合自己的使用做的一個簡介:
1)正向代理:
所謂正向代理就是內網服務器主動要去請求外網的地址或服務,所進行的一種行為。內網服務---訪問--->外網
2)反向代理:
所謂反向代理就是外網要訪問內網服務而進行的一種行為。 外網----請求--->內網服務
(是不是太簡潔了#@#)
2、兩種代理配置方式:
1)正向代理:
server端:
應用在nginx的server段,不要server_name,需要添加一個resolver。
server {
# 配置DNS解析IP地址,比如 Google Public DNS,以及超時時間(5秒)
resolver 8.8.8.8; # 必需
resolver_timeout 5s;
# 監聽端口
listen 8080;
access_log /home/reistlin/logs/proxy.access.log;
error_log /home/reistlin/logs/proxy.error.log;
location / {
# 配置正向代理參數
proxy_pass $scheme://$host$request_uri;
# 解決如果URL中帶"."后Nginx 503錯誤
proxy_set_header Host $http_host;
# 配置緩存大小
proxy_buffers 256 4k;
# 關閉磁盤緩存讀寫減少I/O
proxy_max_temp_file_size 0;
# 代理連接超時時間
proxy_connect_timeout 30;
# 配置代理服務器HTTP狀態緩存時間
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
}
}
client端:
一次代理,直接在shell執行:
#export http_proxy=http://192.168.1.9:8080
永久使用:
#vim .bashrc
export http_proxy=http://192.168.1.9:8080
#source .bashrc
2)反向代理:
主要使用proxy_pass、upstream實現,upstream配置比較簡單,但是如果做負載均衡和優化,還是需要下一番功夫的。這里不做想洗的介紹,參考我寫的另外一篇高並發下的優化。