1. 程式人生 > >apache2, nginx, iis反向代理簡單配置

apache2, nginx, iis反向代理簡單配置

測試配置

  • 後端網站地址192.168.1.100,執行在物理機
  • 虛擬機器server2008192.168.241.141
  • 虛擬機器ubuntu16192.168.241.132安裝apache2和nginx

Apache2.4

配置環境為ubuntu 16.04 server

啟用反向代理模組

sudo a2enmod proxy
# 如果沒有該模組
# apt-get install libapache2-mod-proxy*
systemctl restart apache2

複製一份預設虛擬站點檔案000-default.conf,新增以下內容

# ProxyPreserveHost On 填寫原始的HOST到後端伺服器
ProxyPreserveHost On
ProxyPass / http://192.168.1.100:5000/
ProxyPassReverse / http://192.168.1.100:5000/

更多詳細內容可參考 或 apache官網

https://www.digitalocean.com/community/tutorials/how-to-use-apache-as-a-reverse-proxy-with-mod_proxy-on-ubuntu-16-04

nginx

修改default配置中location /

 location / {
                # First attempt to serve request as file, then
# as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; proxy_pass http://192.168.1.100:5000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set
_header Host $http_host; }

重啟nginx

IIS

安裝IIS模組URL RewriteApplication Request Routing

安裝完畢後應該有如下圖示
這裡寫圖片描述

編輯預設站點重定向

圖片中地址依據本次試驗應填寫192.168.1.100:5000
這裡寫圖片描述

試驗網站

192.168.1.100:5000

# coding=utf-8
#

from flask import Flask, request


app = Flask(__name__)


@app.route('/')
def index():
    s = ''
    for _ in request.headers:
        k, v = _
        s += '<p>%s: %s</p>' % (k, v)
    return '%s' % s


app.run(host='0.0.0.0')

不同代理伺服器對應的訊息頭

apache2
這裡寫圖片描述

nginx
這裡寫圖片描述

IIS
這裡寫圖片描述

總結

保留原始Host

# apache2
ProxyPreserveHost On
# nginx
proxy_set_header Host $http_host;

獲取原始客戶端訪問ip
都可以從X-Forwarded-For中提取第一個ip值

Apache2 和IIS設定X-Real-IP值獲取客戶端ip可能需要額外配置,需要查詢相關資料