กำหนดค่า nginx สำหรับ jboss / tomcat


26

เพื่อที่จะผ่านการเข้าชม JBoss / TomCat พอร์ต 80 ใช้ Apache mod_jkเราใช้ในการติดตั้งและการกำหนดค่า

มีเทียบเท่าสำหรับ nginx? โดยทั่วไปต้องการให้ทราฟฟิกพอร์ต 80 ทั้งหมดถูกส่งไปยัง jboss


คุณสามารถตรวจสอบโพสต์บล็อกของฉันเกี่ยวกับการกำหนดค่า Nginx เป็นผู้รับมอบฉันทะย้อนกลับสำหรับ Tomcat อาจเป็นเรื่องที่น่าสนใจสำหรับคุณตัวอย่างเช่นมีการปรับแต่งเพิ่มเติมเล็กน้อยในเนื้อหาแคชเฉพาะสำหรับผู้ใช้ที่ไม่ได้เข้าสู่ระบบและเปลี่ยนเส้นทางสำหรับภาษาอื่น
Vladimir Grichina

คำตอบ:


17

สำหรับ 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;
  }
}

3

อีกวิธีในการทำเช่นนี้อธิบายไว้ในหน้า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


2

คุณไม่ต้องใช้ mod_jk คุณสามารถใช้ mod_proxy เช่นส่งทราฟฟิกผ่าน HTTP แทน AJP ถ้า nginx มีความสามารถของพร็อกซีนั่นน่าจะใช้ได้เช่นกัน


7
ปัญหาของพร็อกซีคือมันช้ากว่า mod_jk / fastcgi / ajp
Adam Gent

2

ขณะนี้มี ajp_module สดสวยสำหรับNginx ฉันไม่ได้มีประสบการณ์กับมัน แต่ฉันคิดว่าเซสชั่นความเหนียวและโดยเฉพาะอย่างยิ่งการเชื่อมต่อแบ็กเอนด์แบบถาวรนั้นค่อนข้างมีประโยชน์สำหรับ Tomcat ทั้งสองวิธี (พร็อกซี http หรือ ajp proxy) มีความยืดหยุ่นไม่ได้สำหรับการสืบค้นที่ยาว (ดาวหาง) หรือการถ่ายโอนไฟล์ขนาดใหญ่ (อัปโหลด)

https://github.com/yaoweibin/nginx_ajp_module#readme

lighttpd BTW มีโมดูลพร็อกซี่ทั่วไปซึ่งสามารถจัดการการเข้ารหัส FCGI, HTTP, CGIS และ AJP13 ดูเหมือนว่าวิธีการที่ดีกว่า (แต่ฉันคิดว่าการอ่านมันมีข้อ จำกัด เดียวกันกับรูปแบบคำขอ / การตอบสนองที่ยาว / ไม่ใหญ่)

http://redmine.lighttpd.net/wiki/1/Docs:ModProxyCore

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.