Định cấu hình nginx cho jboss / tomcat


26

Để truyền lưu lượng truy cập đến JBoss / TomCat trên cổng 80 bằng cách sử dụng Apache, chúng tôi đã sử dụng để cài đặt và định cấu hình mod_jk.

Có tương đương với nginx? Về cơ bản muốn tất cả lưu lượng truy cập cổng 80 được chuyển đến jboss.


Bạn có thể kiểm tra bài đăng trên blog của tôi về cách định cấu hình Nginx làm proxy ngược cho Tomcat . Nó có thể thú vị với bạn, vì ví dụ bao gồm một vài điều chỉnh bổ sung vì nội dung lưu trữ chỉ dành cho người dùng không đăng nhập và chuyển hướng cho các ngôn ngữ khác nhau.
Vladimir Grichina

Câu trả lời:


17

Đối với nginx kiểm tra tài liệu của họ ở đây . Hỗ trợ proxy được tích hợp sẵn.

Trong ví dụ dưới đây từ trang web của họ, bạn sẽ thấy lưu lượng truy cập cổng 80 cụ thể đang được gửi đến một thùng chứa servlet duy nhất chạy trên cổng 8080.

Lưu ý rằng nếu bạn muốn chạy nhiều thùng chứa dịch vụ phụ trợ (để cân bằng tải, chia tỷ lệ, v.v.), bạn nên xem Mô-đun công bằng ngược dòng sẽ gửi lưu lượng đến máy chủ phụ trợ ít bận rộn nhất. Nó không được vận chuyển bởi 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

Một cách khác để làm điều đó giống như được mô tả trong trang wiki LikeApache .

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;
    }
}

Tôi cũng đã thử nghiệm nó với / myapp thay vì root và cũng hoạt động, đặt location / myapp và proxypass http: // myapp: 8080 / myapp ;

Đồng thời, cấu hình này ánh xạ mọi thứ vào ứng dụng Java, rất hữu ích khi bạn có các URL đẹp được ánh xạ bởi một khung MVC như Struts.


2

Bạn không phải sử dụng mod_jk, bạn có thể sử dụng mod_proxy, tức là chuyển lưu lượng truy cập qua HTTP thay vì AJP. Nếu nginx có khả năng proxy, thì nó cũng hoạt động tốt.


7
Vấn đề với proxy là nó chậm hơn mod_jk / fastcgi / ajp
Adam Gent

2

Bây giờ có một ajp_module khá mới cho nginx . Tôi không có kinh nghiệm với nó, nhưng tôi nghĩ rằng độ dính của phiên và đặc biệt là các kết nối phụ trợ liên tục khá hữu ích cho Tomcat. Cả hai phương thức (http proxy hoặc ajp proxy) đều không linh hoạt đối với các truy vấn lâu dài (sao chổi) hoặc chuyển tập tin lớn (tải lên).

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

lighttpd BTW có một mô-đun proxy chung có thể xử lý mã hóa FCGI, HTTP, CGIS và AJP13. Điều này có vẻ như là một cách tiếp cận tốt hơn (nhưng tôi nghĩ từ việc đọc nó cũng có những hạn chế tương tự đối với các mẫu yêu cầu / phản hồi dài / lớn không điển hình).

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.