Nginx負載均衡配置 域名和IP 訪問時從java request.getServerName()獲取不同問題解決


有一個站點端口是9005 有配置Nginx做負載均衡,配置說明如下

對外開放端口:192.168.1.100:9005 對外開放  配置域名www.abc.com

tomcat部署站點1:192.168.1.100:9015

tomcat部署站點2:192.168.1.100:9025

有java代碼:request.getServerName() 因為有有些人用域名訪問有些人用IP訪問

因為在Nginx里只配置了域名www.abc.com訪問轉發,如下

http {
    include       mime.types;
    default_type  application/octet-stream;
    client_max_body_size 50m;
    sendfile        on;

    upstream www.abc.com{
        #ip_hash;
        server 192.168.1.100:9015;
    server 192.168.1.100:9025;
    }
    server {
        listen       9005;
        server_name  www.abc.com;

        location / {
            proxy_pass http://www.abc.com;
        proxy_hide_header Set-Cookie;
        }
    }
}

 

如果用域名 www.abc.com:9005 訪問 request.getServerName() 得到www.abc.com

如果用域名 192.168.1.100:9005 訪問 request.getServerName() 得到也是www.abc.com (這不是我想要的,應該得到192.168.1.100)

查了半天以為代碼寫錯了,最后想起來是Nginx轉發時用域名在當做地址在訪問,所以代碼只能得到域名。網上查了一下只要添加一個IP訪問的配置即可

解決辦法在修改nginx.conf配置文件即可 代碼如下:

http {
    include       mime.types;
    default_type  application/octet-stream;
    client_max_body_size 50m;
    sendfile        on;
#domain visit upstream www.abc.com{ #ip_hash; server
192.168.1.100:9015; server 192.168.1.100:9025; } server { listen 9005; server_name www.abc.com; location / { proxy_pass http://www.abc.com; proxy_hide_header Set-Cookie; } } #ip visit upstream 192.168.1.100{ #ip_hash; server 192.168.1.100:9015; server 192.168.1.100:9025; } server { listen 9005; server_name 192.168.1.100; location / { proxy_pass http://192.168.1.100; proxy_hide_header Set-Cookie; } } }

,重新Nginx,再訪問進行測試,就搞定了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM