因爲公司服務器的 tomcat 服務要對外服務,非80端口在訪問的時候要域名加上端口,比較麻煩,因此配置 nginx 反向代理來實現域名訪問,利用 nginx 反向代理將不一樣域名的請求轉給不一樣的端口處理;nginx
編輯 nginx 配置文件 nginx.conf 後端
#############################################################################緩存
gzip on;tomcat
client_max_body_size 50m; #緩衝區代理緩衝用戶端請求的最大字節數,能夠理解爲保存到本地再傳給用戶服務器
client_body_buffer_size 256k;負載均衡
client_header_timeout 3m;阿里雲
client_body_timeout 3m;url
send_timeout 3m;代理
proxy_connect_timeout 300s; #nginx跟後端服務器鏈接超時時間(代理鏈接超時)server
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 域名;
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://localhost:3000;
}
access_log logs/access.log;
}
#############################################################################
配置負載均衡則使用
upstream lb_name {
server IP1:port;
server IP2:port;
}
而後將 server_name 後面的轉發地址域名改成 lb_name 便可;
問題1:轉發域名時會遇到域名重定向,配置過程當中 tomcat 使用了 js window.location.href = "org/index.do"; 重定向,過程當中 nginx server_name = http://localhost:3000; 轉換地址沒法訪問,配置成 server_name = http://localhost:3000/ 添加了 「 / 」後能夠訪問;
問題2:阿里雲萬網解析配置二級域名的時候,居然能夠配置兩個相同的二級域名並指向不一樣的 IP 地址,項目從老環境遷移至新環境,域名沒變,配置的解析地址變了(老項目的坑麼);
問題3:nginx 配置反向代理能夠使用 proxy_set_header 自定義 http 協議的 header,配置的時候要仔細,配置出錯就會致使 url 沒法解析成功;