1. 程式人生 > >Nginx快捷配置Tomcat虛擬主機

Nginx快捷配置Tomcat虛擬主機

作者:fbysss
QQ:溜酒酒吧酒吧吾散
blog:blog.csdn.net/fbysss
宣告:本文由fbysss原創,轉載請註明出處

典型場景:
Tomcat的webapps目錄中,有兩個應用:app1、app2,如果沒有nginx,我們的訪問路徑為:
http://www.domainname.com:8080/app1
http://www.domainname.com:8080/app2
埠號暴露給使用者很不好看也不安全。修改Tomcat配置檔案的做法,也可以,但感覺麻煩一些,在這裡並不推薦。讓使用者感覺不到Tomcat的存在,並讓Tomcat伺服器安全的藏在Nginx後面,是我們的目的。

我們希望使用者通過以下地址來訪問:

http://app1.domainname.com

http://app2.domainname.com

比如我們在配置Maven私服Nexus的時候就如此,其預設的路徑是http://localhost:8081/nexus,我們希望通過nexus.domainname.com來訪問。

解決辦法:

首先,域名解析,這一步不用在這裡說了。如果只是內部實驗,將app1.domainname.com、app2.domainname.com配置在客戶端hosts檔案中即可。
然後,開始修改nginx.conf
如果不考慮叢集,使用proxy_pass 目的地址即可轉發。
於是,我們自然想到,在server節點中應該有如下配置(下面就以nexus為例,如果是多個應用,配置多個server即可):
    server {
        listen 80;
        server_name nexus.domainname.com;
        location /{
           index index.html index.htm index.jsp;
           proxy_pass http://xx.xx.xx.xx:8081/nexus;
        }
     }

問題1:瀏覽器(chrome)告訴我們,此網頁包含重定向迴圈,此時位址列顯示的地址是http://nexus.domainname.com//通過查詢相關資料,在路徑proxy_pass這句話中,nexus後面加一個斜槓/,就可以正常轉向了。

問題2:訪問應用的時候,發現遇到使用者認證的時候,自然返回到登入頁了。這是啥子情況?此時,如果是一般的tomcat應用,位址列上,後面會跟上,jsessionId=xxxxxx,而且每次訪問都不同。

分析:我們可以猜想,session失效了。

解決:原來,這裡存在一個cookie路徑的配置問題。原理可參考文章:http://030710314.iteye.com/blog/2095819增加一行proxy_cookie_path /nexus /;即可。

    server {
        listen 80;
        server_name nexus.domainname.com;
        location /{
           index index.html index.htm index.jsp;
           proxy_pass http://xx.xx.xx.xx:8081/nexus/;
           proxy_cookie_path /nexus /;
        }
    }


這種配法,位址列中的地址,也很優雅。
順便提及另外一種做法:
    server {
        listen 80;
        server_name nexus.domainname.com;
        location /{
           index index.html index.htm index.jsp;
           proxy_pass http://xx.xx.xx.xx:8081;
           rewrite ^/$ /nexus last;
        }
    }

這種配法,原理很簡單,就是僅僅幫你做了一步,訪問站點時,自動轉發路徑到nexus,省得輸入。其他該怎樣怎樣。所以也不用管cookie的事情。
不過缺點就是,位址列上顯示的地址不好看,還是帶子目錄的。
所以,對於第一種配法:
           proxy_pass http://xx.xx.xx.xx:8081/nexus/;
           proxy_cookie_path /nexus /;

還有一種寫法可以達到同樣效果:
           proxy_pass http://xx.xx.xx.xx:8081;
           rewrite /(.*)$    /nexus/$1 break;
           proxy_cookie_path /nexus /;

問題3:

解決了埠和子目錄的問題之後,新的問題可能存在。

比如,有些地方,我們在Java程式碼裡面將contextPath寫死了。用於拼接url。String ctx = request.getContextPath();//這裡取出來的肯定還是帶子目錄的。因為其由應用伺服器決定,與nginx配置無關。

修改Java程式碼顯然不是好的方法。

rewrite可以幫助我們解決問題。

增加一句: 

           rewrite /nexus(.*)$ /$1 permanent;
即可——注意如果用last的話,位址列不會更新。

當然。如果為了避免其他路徑裡面也有nexus,可以將其放在location ~/nexus裡面。或者有更嚴格的正則表示式。

PS:

1.修改了配置檔案,別忘了使用nginx -s reload過載配置檔案。

2.這個例子使用nexus,只是簡單示意,如果是在配置私服上有問題,可參考:

http://books.sonatype.com/nexus-book/reference/install-sect-proxy.html

要注意BASE_URL的配置,要配置為全路徑,不帶nexus,還要將Force Base URL打鉤——nexus的靜態資源的根路徑應該會通過這個來讀取。出現404無法載入某個資源的問題。

3.如果proxy_cookie_path /nexus / 出現問題,嘗試proxy_cookie_path /nexus/ /

相關推薦

Nginx快捷配置Tomcat虛擬主機

作者:fbysss QQ:溜酒酒吧酒吧吾散 blog:blog.csdn.net/fbysss 宣告:本文由fbysss原創,轉載請註明出處典型場景: Tomcat的webapps目錄中,有兩個應用:app1、app2,如果沒有nginx,我們的訪問路徑為: http://

nginx常用配置系列-虛擬主機

server com 文件 主機 -o 書寫 lena 準備 類型 本來準備詳盡的出一份nginx配置講解,但nginx功能配置繁多,平常使用中使用最多的一般有: 1. 虛擬主機配置 2. HTTPS配置 3. 靜態資源處理 4. 反向代理 ================

16.4 配置Tomcat監聽80端口 16.5/16.6/16.7 配置Tomcat虛擬主機 16.8 Tomcat日誌

16.4 配置tomcat監聽80端口 16.5/16.6/16.7 配置tomcat虛擬主機 16.8 tomcat日誌16.4 配置Tomcat監聽80端口16.5/16.6/16.7 配置Tomcat虛擬主機16.8 Tomcat日誌擴展邱李的tomcat文檔 https://www.linuser

配置Tomcat監聽80端口、配置Tomcat虛擬主機Tomcat日誌

tomcat服務配置Tomcat監聽80端口1、[root@centos7 package]# vim /usr/local/tomcat/conf/server.xml <Connector port="80" protocol="HTTP/1.1" connection

Tomcat監聽80端口、配置Tomcat虛擬主機Tomcat日誌

inpu 數據庫 網站 connector example handle length 創建 ssl 配置Tomcat監聽80端口 1.配置Tomcat服務的訪問端口 Tomcat默認啟動的端口是8080,如果你想修改為80,則需要修改server.xml文件。 [ro

配置Tomcat監聽80端口、 配置Tomcat虛擬主機Tomcat日誌

瀏覽器 目錄的作用 虛擬主機 bin protoc 相同 其中 日誌文件 true 配置Tomcat監聽80端口 Tomcat監聽的是8080端口,也可以自定義為80

配置Tomcat監聽80端口, 配置Tomcat虛擬主機Tomcat日誌

tomcat配置Tomcat監聽80端口 編輯配置文件vim /usr/local/tomcat/conf/server.xml在裏面找到8080<Connector port="8080" protocol="HTTP/1.1"connectionTimeout

配置Tomcat監聽80端口 配置Tomcat虛擬主機 Tomcat日誌

ffffff system32 term www apache manager pac drive init.d 一、配置Tomcat監聽80端口#vim /usr/local/tomcat/conf/server.xml //修改tomcat配置文件<

16.4 配置Tomcat監聽80端口 16.5/16.6/16.7 配置Tomcat虛擬主機 16

技術分享 主機 tomcat日誌 9.png tom ges text 分享圖片 虛擬主機 16.4 配置Tomcat監聽80端口 16.5/16.6/16.7 配置Tomcat虛擬主機 16.8 Tomcat日誌16.4 配置Tomcat監聽80端口 16.5/16

配置Tomcat虛擬主機

12月13日任務 16.4 配置Tomcat監聽80埠 16.5/16.6/16.7 配置Tomcat虛擬主機 16.8 Tomcat日誌   配置tomcat監聽80埠 預設tomcat監聽的是8080埠,如果想直接輸入ip就訪問到網頁,就需要進行如下操作: 修改配置檔案

配置Tomcat虛擬主機-2

ofo http .cn href eba release p12 ins 瀏覽器 docBase,這個參數用來定義網站的文件存放路徑,如果不定義,默認是在appBase/ROOT下面,定義了docBase就以該目錄為主了。其中appBase和docBase可以一樣。在這一

Tomcat介紹、安裝jdk 、安裝Tomcat配置Tomcat監聽80埠、配置Tomcat虛擬主機Tomcat日誌

一、Tomcat介紹 Tomcat是Apache軟體基金會(Apache Software Foundation)的Jakarta專案中的一個核心專案,由Apache、Sun和其他一些公司及個人共同開發而成。 Tomcat伺服器是一個免費的開放原始碼的Web應用

nginx配置虛擬主機、負載均衡和反向代理--03

第3篇主要講 URL路由重寫 和 讀寫分離 nginx中的 location 正則模組 nginx中的URL重寫怎麼做。url重寫模組,主要是在location模組面來實現,我們一點一點的看。 首先看下location 正則匹配的使用。 還記得之前是

nginx配置虛擬主機、負載均衡和反向代理--02

基於域名的虛擬主機 假設我們在本地開發有3個專案,分別在hosts裡對映到本地的127.0.0.1上: 127.0.0.1 www.iyangyi.com iyangyi.com 127.0.0.1 api.iyangyi.com 127.0.0.1 a

nginx基於域名的虛擬主機配置實戰

linux背景: 在www虛擬主機站點基礎上新增一個bbs虛擬主機站點。1 備份配置文件[[email protected]/* */ conf]# pwd /application/nginx/conf [[email protected]/* */ conf]#

配置Tomcat虛擬目錄和主機,通過主機名來訪問項目

進行 通過 port 工程 步驟 .net ber ava itl 目的:在學習javaweb的過程中,經常會用瀏覽器來訪問項目,但是每次訪問時都需要輸入一大串路徑,非常麻煩。這裏教大家配置tomcat虛擬主機,訪問項目時,直接輸入虛擬主機名字即可! 步驟: 1. 設置默認

nginx基於域名的虛擬主機配置

egrep end 空格 agen 通過 cti 本機 網站 重啟nginx 與apache服務器類似,nginx也有基於域名,IP及端口的虛擬主機配置,在實際工作場景中,基於域名的虛擬主機配置較常見。nginx服務的主要配置文件nginx.conf[root@lnmp01

Nginx系列--03HTTP段基本配置虛擬主機

HTTP段基本配置 Nginx虛擬主機配置 HTTP協議配置格式 http { ... ...:各server的公共配置 server { ... }:每個server用於定義一個虛擬主機; server { ...

Tomcat虛擬主機配置(基於域名/端口)

Tomcat什麽是虛擬主機? 虛擬主機就是把一臺真正的主機分成許多“虛擬”的主機,每一臺虛擬主機都具有獨立的域名和IP地址,具有完整的Internet服務器功能。虛擬主機之間完全獨立,在外界看來,每一臺虛擬主機和一臺獨立的主機完全一樣。 配置文件位置: tomcat/conf/server.xml文件2.to

nginx配置及其虛擬主機的搭建

添加 eve server sbin work pen processes onf host 1:基本配置 [dev@HC-25-44-18 nginx]$ ./sbin/nginx -V nginx version: nginx/ built by gcc 4.4.7 2