1. 程式人生 > >搭建Nginx反向代理做內網域名轉發

搭建Nginx反向代理做內網域名轉發

color 利用 大小 red 請求轉發 max 格式 服務器響應時間 ons

由於公司內網有多臺服務器的 http 服務要映射到公司外網靜態 IP,如果用路由的端口映射來做,就只能一臺內網服務器的 80 端口映射到外網 80 端口,其他服務器的 80 端口只能映射到外網的非 80 端口。非 80 端口的映射在訪問的時候要域名加上端口,比較麻煩。

我們可以在內網搭建一個Nginx反向代理服務器,將Nginx反向代理服務器的80映射到外網IP的80,這樣指向到公司外網IP的域名的HTTP請求就會發送到Nginx反向代理服務器,利用Nginx反向代理將不同域名的請求轉發到內網不同機器的端口,就起到了根據域名自動轉發到相應服務器特定端口的效果。

user www www;
worker_processes 
1; error_log logs/error.log; pid logs/nginx.pid; worker_rlimit_nofile 65535; events { use epoll; worker_connections 65535; } http { include mime.types; default_type application/octet-stream; include /usr/local/nginx/conf/reverse-proxy.conf; sendfile on; keepalive_timeout 65; gzip on; client_max_body_size 50m; client_body_buffer_size 256k; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; proxy_connect_timeout 300s; #nginx 跟後端服務器連接超時時間(代理連接超時) proxy_read_timeout 300s; #連接成功後,後端服務器響應時間(代理接收超時) proxy_send_timeout 300s; proxy_buffer_size 64k; #設置代理服務器(nginx)緩存 proxy_buffers
4 32k; #proxy_buffers 緩沖區,網頁平均在 32k 以下的話,這樣設置 proxy_busy_buffers_size 64k; #高負荷下緩沖大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大於這個值,將從 upstream 服務器傳遞請求,而不緩沖到磁盤 proxy_ignore_client_abort on; #不允許代理端主動關閉連接 server { listen 80; server_name localhost; location
/ { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } server { listen 80; server_name www.test.com; access_log logs/test.com_access.log; location / { proxy_redirect off; 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_pass http://IP; } } server { listen 80; server_name www.ceshi.com; access_log logs/ceshi.com_access.log; location / { proxy_redirect off; 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_pass http://IP; } }

要想能記錄真實IP,需要修改後端機器的日誌格式,假設後端也是一臺nginx:在後端配置文件裏面加入下面這一段即可:

log_format access $HTTP_X_REAL_IP - $remote_user [$time_local] "$request" 
$status $body_bytes_sent "$http_referer" 
"$http_user_agent" $HTTP_X_Forwarded_For;

access_log logs/access.log access;

然後重新加載 nginx 配置文件,使之修改生效,再把域名指向公司靜態 IP,這樣就成功的做到了在瀏覽器中輸入不同域名,指向到內網不同服務器的效果

搭建Nginx反向代理做內網域名轉發