Nginx 擅長靜態資源處理與高併發反向代理,但無法原生運行 JSP 等 Java 動態頁面。生產環境常見架構:Nginx 作為前端入口,靜態資源直讀,動態請求(.jsp、.jspx、.do、.action 等)反向代理至後端 Tomcat 處理。本文記錄 CentOS 環境下 Nginx 與 Tomcat 整合的完整配置步驟。
假設 Nginx 監聽 80 端口,Tomcat 運行於 8080 端口。
在 Nginx 配置目錄(/usr/local/nginx/conf)下創建 jsp.conf,關鍵配置如下:
user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 121.42.41.143:80;
server_name 121.42.41.143;
access_log logs/host.access.log combined;
location ~ \.(jsp|jspx|do|action)?$ {
root /usr/local/tomcat1.7/webapps/jsp;
index index.jsp index.jspx index.do;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://121.42.41.143:8080;
}
}
}
killall -9 nginx/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/jsp.confhttps://121.42.41.143/jsp/index.jsp,若正常顯示 JSP 頁面即配置成功。用戶訪問動態後綴資源時,Nginx 攔截請求,依據 location 規則將請求轉發給 Tomcat 處理,Tomcat 執行 JSP 編譯渲染後返回結果,Nginx 再回傳給客戶端。實現了「靜態 Nginx 直讀,動態 Tomcat 處理」的職責分離。