由于公司內網有多臺處事器的http處事要映射到公司外網靜態IP,假如用路由的端口映射來做,就只能一臺內網處事器的80端口映射到外網80端口,其他處事器的80端口只能映射到外網的非80端口。非80端口的映射在會見的時候要域名加上端口,較量貧苦。而且公司進口路由最多只能做20個端口映射。必定今后不足用。
然后發明可以在內網搭建一個nginx反向署理處事器,,將nginx反向署理處事器的80映射到外網IP的80,這樣指向到公司外網IP的域名的HTTP請求就會發送到nginx反向署理處事器,操作nginx反向署理將差異域名的請求轉發給內網差異呆板的端口,就起到了“按照域名自動轉發到相應處事器的特定端口”的結果,而路由器的端口映射做到的只是“按照差異端口自動轉發到相應處事器的特定端口”。
本次嘗試方針是做到:在欣賞器中輸入xxx123.tk能會見到內網呆板192.168.10.38的3000端口,輸入xxx456.tk能會見到內網呆板192.168.10.40的80端口。
vim nginx.conf
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 xxx123.tk;
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://192.168.10.38:3000;
}
access_log logs/xxx123.tk_access.log;
}
server
{
listen 80;
server_name xxx456.tk;
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://192.168.10.40:80;
}
access_log logs/xxx456.tk_access.log;
}