首頁  >  問答  >  主體

運維 - Nginx反向代理tomcat

有兩個jsp應用,本地存取位址如下

http://127.0.0.1:8080/app1
http://127.0.0.1:8080/app2

透過下面的設定可以實現 http://domain.com/app1 和 http://domain.com/app2 的訪問

server {
    listen    80;
    server_name    domain.com;
    charset    utf-8;
    location /{
        proxy_pass http://127.0.0.1:8080/;
        proxy_redirect  off;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

現在想用兩個網域來存取這兩個應用程式
透過http://app1.domain.com 來訪問http://127.0.0.1:8080/app1
透過http://app2 .domain.com 來訪問http://127.0.0.1:8080/app2
配置如下

server {
    listen    80;
    server_name  app1.domain.com;
    charset utf-8;
    location /{
        proxy_pass http://127.0.0.1:8080/app1;
        proxy_redirect  off;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    listen    80;
    server_name  app2.domain.com;
    charset utf-8;
    location /{
        proxy_pass http://127.0.0.1:8080/app2;
        proxy_redirect  off;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

結果只能顯示首頁,靜態資源都無法載入

#我感觉应该这么写可是有语法错误
if ($uri ^/$){proxy_pass http://127.0.0.1:8080/app1;}
if ($uri ^/app1){proxy_pass http://127.0.0.1:8080/$request_uri;}

所以到底應該要如何配置?

仅有的幸福仅有的幸福2714 天前455

全部回覆(4)我來回復

  • 迷茫

    迷茫2017-05-16 17:15:23

    無法載入是什麼意思?是502?還是jsp中的靜態路徑不對?

    回覆
    0
  • 迷茫

    迷茫2017-05-16 17:15:23

    其實你還是基於上面那個就行的。 。然後基於二級域名的偽靜態轉送就好了。 。具體不寫了。原理是那樣的。要試幾次才確定寫法的。

    大致思路就是把 .domain.com/ 都轉送到 http://127.0.0.1:8080/$1/$2

    回覆
    0
  • 阿神

    阿神2017-05-16 17:15:23

    謝邀!
    我認為需要做動靜分離,把js,css和圖片給ngixn處理,不用tomcat處理。 jsp的請求才轉發給tomcat處理。

    
    location ~ .*\.(jpg|js|css)$ 
    { 
    root /home/www/image/;
    }

    回覆
    0
  • 世界只因有你

    世界只因有你2017-05-16 17:15:23

    親。 。 。你 root 沒寫, nginx 怎麼給你代理文件?樓上那樣就好。

    回覆
    0
  • 取消回覆