Nginx 設定反向代理 Reverse Proxy


什麼是反向代理 Reverse Proxy?

反向代理是在真實伺服器與客戶端間的代理伺服器, 當使用者透過客戶端 (瀏覽器) 訪問網站時, 反向代理伺服器會將請求轉送到背後的真實伺服器, 再將網站的結果傳送給客戶端。真實伺服器可能是本機的其他 Port, 也可能在內部網路, 或者在其他外部網路, 這樣使用者不會知道真實的伺服器在那裡, 可以隱藏真正伺服器的位置, 而且也可以實現 load balancing.

安裝 Nginx 可以用 yum 或 apt-get 安裝:

$ sudo yum install nginx

$ sudo apt install nginx

然後啟動 Nginx 及設定開機自動啟動:

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

當安裝了 Nginx 後, 開啟 Nginx 的設定檔:

$ sudo vim /etc/nginx/conf.d/default.conf

加入以下內容:

上面設定了網域 example.yourdomain.com, 而後端真實伺服器是 http://www.your-real-domain.com.

由於真實伺服器與使用者中間有反向伺服器, 要取得使用者的 IP, 不能用預設的方法。
上面的例子中, 在真實伺服器的 PHP 程式內, 要取得使用者的 IP, 需要用 $_SERVER[‘HTTP_X_REAL_IP’] 或 $_SERVER[‘HTTP_X_FORWARDED_FOR’] 取得.

設定後先檢查設定檔的語法是否正確:

$ sudo nginx -t

如果沒有錯誤, 便可以重新載入 Nginx 的新設定:

$ sudo nginx -s reload

現在當有訪問 Nginx 時, 便會載入 http://www.your-real-domain.com 的內容.

Leave a Reply