เพื่อที่จะผ่านการเข้าชม JBoss / TomCat พอร์ต 80 ใช้ Apache mod_jk
เราใช้ในการติดตั้งและการกำหนดค่า
มีเทียบเท่าสำหรับ nginx? โดยทั่วไปต้องการให้ทราฟฟิกพอร์ต 80 ทั้งหมดถูกส่งไปยัง jboss
เพื่อที่จะผ่านการเข้าชม JBoss / TomCat พอร์ต 80 ใช้ Apache mod_jk
เราใช้ในการติดตั้งและการกำหนดค่า
มีเทียบเท่าสำหรับ nginx? โดยทั่วไปต้องการให้ทราฟฟิกพอร์ต 80 ทั้งหมดถูกส่งไปยัง jboss
คำตอบ:
สำหรับ Nginx เช็คเอาเอกสารของพวกเขาที่นี่ การสนับสนุนพร็อกซีถูกสร้างขึ้น
ในตัวอย่างด้านล่างจากไซต์ของพวกเขาคุณจะเห็นว่าปริมาณการรับส่งข้อมูลพอร์ต 80 เฉพาะถูกส่งไปยังคอนเทนเนอร์ servlet เดียวที่ทำงานบนพอร์ต 8080
โปรดทราบว่าหากคุณต้องการใช้หลาย servlet คอนเทนเนอร์แบ็กเอนด์ (สำหรับการทำ load load, scaling, etc ... ) คุณควรดูที่Upstream Fair Moduleที่จะส่งปริมาณข้อมูลไปยังเซิร์ฟเวอร์แบ็กเอนด์ที่ยุ่งน้อย มันไม่ได้จัดส่งโดย defaul w / nginx
server {
listen 80;
server_name YOUR_DOMAIN;
root /PATH/TO/YOUR/WEB/APPLICATION;
location / {
index index.jsp;
}
location ~ \.do$ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ \.jsp$ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ^~/servlets/* {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
อีกวิธีในการทำเช่นนี้อธิบายไว้ในหน้าLikeApache wiki
server {
listen myhost:80;
server_name myhost;
location / {
root /path/to/myapp/public;
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 http://myapp:8080;
}
}
ฉันได้ทดสอบแล้วเช่นกันกับ / myapp แทนที่จะเป็น root และทำงานได้ดีโดยวางตำแหน่ง / myapp และ proxypass http: // myapp: 8080 / myapp ;
รวมถึงการกำหนดค่านี้แมปทุกอย่างกับแอปพลิเคชัน Java ซึ่งมีประโยชน์เมื่อคุณมี URL ที่ดีซึ่งถูกแมปโดยกรอบงาน MVC เช่น Struts
คุณไม่ต้องใช้ mod_jk คุณสามารถใช้ mod_proxy เช่นส่งทราฟฟิกผ่าน HTTP แทน AJP ถ้า nginx มีความสามารถของพร็อกซีนั่นน่าจะใช้ได้เช่นกัน
ขณะนี้มี ajp_module สดสวยสำหรับNginx ฉันไม่ได้มีประสบการณ์กับมัน แต่ฉันคิดว่าเซสชั่นความเหนียวและโดยเฉพาะอย่างยิ่งการเชื่อมต่อแบ็กเอนด์แบบถาวรนั้นค่อนข้างมีประโยชน์สำหรับ Tomcat ทั้งสองวิธี (พร็อกซี http หรือ ajp proxy) มีความยืดหยุ่นไม่ได้สำหรับการสืบค้นที่ยาว (ดาวหาง) หรือการถ่ายโอนไฟล์ขนาดใหญ่ (อัปโหลด)
https://github.com/yaoweibin/nginx_ajp_module#readme
lighttpd BTW มีโมดูลพร็อกซี่ทั่วไปซึ่งสามารถจัดการการเข้ารหัส FCGI, HTTP, CGIS และ AJP13 ดูเหมือนว่าวิธีการที่ดีกว่า (แต่ฉันคิดว่าการอ่านมันมีข้อ จำกัด เดียวกันกับรูปแบบคำขอ / การตอบสนองที่ยาว / ไม่ใหญ่)