iT邦幫忙

0

JBOSS裡面要如何將HTTP 8080與HTTPS 8443的流量導到HTTP 80與HTTPS 443?

各位先進大家好,請問在JBOSS裡面使用到8080與8443的時候, 要如何將HTTP 8080與HTTPS 8443的流量導到HTTP 80與HTTPS 443?

讓本來是HTTP://XXX:8080的URL可以用HTTP://XXX執行

有沒有先進改過這個東西的呢??

2 個回答

16
wiseguy
iT邦超人 1 級 ‧ 2013-01-17 09:25:10
最佳解答

如果你只是要改 JBOSS 執行的 port,那就更改它的設定檔 server.xml 找到 port 8080 的地方,改成 80,重新執行 JBOSS 就會變成 80 了。

不過你瞭解 JBOSS 為什麼要把 port 預設在不是一般的 HTTP 80與 HTTPS 443 嗎 (而且預設只允許本機連而已)?因為 JBOSS 是執行程式用的,所有連線都會交給 java 去執行。所以通常不放在第一線給 user 連線。user 連到你的網站,一般都是先秀網頁,網頁裡面有需要抓動態資料的地方,才會用到 JBOSS 執行程式。所以 HTTP 80與HTTPS 443 是給第一線的 web server 服務靜態檔案用的,例如 html、jpg、css、js 這類檔案。需要執行程式的時候,再由第一線的 web server 以反向代理的方式 (reverse proxy) 交給後面的 JBOSS 處理。這樣網站的速度才會快。

要是連 html、jpg、css、js 這類檔案也丟給 JBOSS 來處理,那網站會慢如牛步,沒必要 (這些檔案又不是程式),事實上也是錯誤的用法。

看更多先前的回應...收起先前的回應...
wiseguy iT邦超人 1 級 ‧ 2013-01-17 09:40:17 檢舉

示意圖

520allen iT邦新手 5 級 ‧ 2013-01-17 14:43:25 檢舉

您好,我不是很瞭解 JBOSS 為什麼要把 port 預設在不是一般的 HTTP 80與 HTTPS 443 (而且預設只允許本機連而已)。。。。

謝謝您提供的詳細資訊

我再做一下LAB試試看,另外請教您

若原始URL為
HTTPS://PPP.COM.TW:8080/a/b/

希望可以變成
HTTPS://PPP.COM.TW/

是要怎麼修改呢??

wiseguy iT邦超人 1 級 ‧ 2013-01-17 14:45:39 檢舉

把 standalone.xml 中的
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
改為
<socket-binding name="http" port="80"/>
<socket-binding name="https" port="443"/>
再重跑 JBoss 即可。

520allen iT邦新手 5 級 ‧ 2013-01-17 22:49:15 檢舉

可是改完後,"/a/b/"的路徑要怎麼縮到root目錄裡呢?

wiseguy iT邦超人 1 級 ‧ 2013-01-18 00:09:45 檢舉

你的需求不是只要把 /a/b 加到 context-root 就好了嗎?
https://access.redhat.com/knowledge/docs/en-US/JBoss\_Enterprise\_Portal\_Platform/4.3/html/Reference\_Guide/configuration-contextroot.html
建議你還是好好地研究一下 JBoss 怎麼安裝比較妥當喔。

520allen iT邦新手 5 級 ‧ 2013-01-24 00:31:03 檢舉

w大謝謝你們的回覆, 我再看一下是怎麼處理...有點吃力所以回應比較慢,不好意思

8
bizpro
iT邦大師 1 級 ‧ 2013-01-17 12:00:31

jboss用8080和8443的真實意義是因為80和443都是特權埠口(privileged ports), 在Linux/Unix/BSD...等系統中1024以下的都是特權埠口, 需要root權限才能bind, 因此, 用80和443都不是好的安全作為.

我用jboss, 不用特權埠口的, 只要在防火牆上做NAT就好了. 也可以用Reverse proxy來做, 例如用Nginx, Varnish, HAProxy,...等等.

但是可以改到其它非特權埠口, jboss不同版本的設定也不同. 以jboss AS 7.1.0來說, standalone.xml中, 修改需要的ports:
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"><socket-binding name="http" port="8080"/><socket-binding name="https" port="8443"/><socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/><socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/><socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/><socket-binding name="osgi-http" interface="management" port="8090"/><socket-binding name="remoting" port="4447"/><socket-binding name="txn-recovery-environment" port="4712"/><socket-binding name="txn-status-manager" port="4713"/><outbound-socket-binding name="mail-smtp"><remote-destination host="localhost" port="25"/></outbound-socket-binding></socket-binding-group>

或者修改您用來啟動的xml啟動參數檔.

看更多先前的回應...收起先前的回應...
520allen iT邦新手 5 級 ‧ 2013-01-17 14:37:34 檢舉

謝謝大家的回覆,我補充一下

若原始URL為
HTTPS://PPP.COM.TW:8080/a/b/

希望可以變成
HTTPS://PPP.COM.TW/

一樣也是從改XML來操作嗎?

wiseguy iT邦超人 1 級 ‧ 2013-01-17 14:43:58 檢舉

對。把
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
改為
<socket-binding name="http" port="80"/>
<socket-binding name="https" port="443"/>
即可。

bizpro iT邦大師 1 級 ‧ 2013-01-17 16:35:16 檢舉

把重導到80和443的工作交給防火牆或reverse proxy(load balancing)吧.

520allen iT邦新手 5 級 ‧ 2013-01-17 22:49:32 檢舉

請問改完後,"/a/b/"的路徑要怎麼縮到root目錄裡呢?

bizpro iT邦大師 1 級 ‧ 2013-01-18 09:24:53 檢舉

這是rewrite的工作, 請先參考:
http://docs.jboss.org/jbossweb/7.0.x/rewrite.html

520allen iT邦新手 5 級 ‧ 2013-01-24 00:31:16 檢舉

b大謝謝你們的回覆, 我再看一下是怎麼處理...有點吃力所以回應比較慢,不好意思

我要發表回答

立即登入回答