2017-12-14 14 views
0

다른 server_names에서 Tomcat 서버의 여러 응용 프로그램을 역방향 프록시로 설정하려고합니다. 예를 들어, 클라이언트 aapp-a의 tomcat에서 응용 프로그램으로 전송됩니다.단일 톰캣 인스턴스에서 Nginx 리버스 프록시 응용 프로그램

대신 브라우저가 js 파일이나 이미지 또는 CSS를받지 못합니다. 그냥 HTML을 가져옵니다.

user www-data; 

     error_log /var/log/nginx/error.log warn; 
     pid  /run/nginx.pid; 

     worker_processes 2; 

     events { 
      worker_connections 1024; 
      multi_accept on; 
     } 

     http { 
       client_body_buffer_size 10m; 
       client_header_buffer_size 1m; 
       client_max_body_size 20m; 
       large_client_header_buffers 2 1m; 

       keepalive_timeout 300s; 
       send_timeout 300s; 

       proxy_http_version 1.1; 
       proxy_connect_timeout 300s; 
       proxy_send_timeout 300s; 
       proxy_read_timeout 300s; 

       proxy_set_header Host $host; 
       proxy_set_header X-Real-IP $remote_addr; 
       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_bind $server_addr; 

       proxy_buffering off; 
       chunked_transfer_encoding off; 

       # kill cache 
       #add_header Last-Modified $date_gmt; 
       #add_header Cache-Control 'private no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'; 
       if_modified_since off; 
       expires off; 
       etag off; 

       # kill proxy cache, even if cached, don't try to use it 
       proxy_no_cache 1; 
       proxy_cache_bypass 1; 

       server { 
        listen 80; 
        listen [::]:80; 

        server_name ~^([\w\d-]+)\.app\.uat\.us\.pic\.com; 

        location/{ 
         proxy_pass http://uat-client-appservers.us.pic.com:80/app-$1/; 
        } 
        location /app/ { 
          proxy_pass http://uat-client-appservers.us.pic.com:80/app-$1/; 
        } 
        location /app-handler/ { 
          proxy_pass http://uat-client-appservers.us.pic.com:80/app-handler-$1/; 
        } 
       } 
     } 

답변

0

각 클라이언트 응용 프로그램마다 별도의 서버 컨텍스트를 만들고 리디렉션을 사용하여 루트 컨텍스트에서 라우팅을 처리했습니다.

사용자 www-data;

error_log /var/log/nginx/error.log warn; 
    pid  /run/nginx.pid; 

    worker_processes 2; 

    events { 
     worker_connections 1024; 
     multi_accept on; 
    } 

    http { 
      client_body_buffer_size 10m; 
      client_header_buffer_size 1m; 
      client_max_body_size 20m; 
      large_client_header_buffers 2 1m; 

      keepalive_timeout 300s; 
      send_timeout 300s; 

      proxy_http_version 1.1; 
      proxy_connect_timeout 300s; 
      proxy_send_timeout 300s; 
      proxy_read_timeout 300s; 

      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      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_bind $server_addr; 

      proxy_buffering off; 
      chunked_transfer_encoding off; 

      # kill cache 
      #add_header Last-Modified $date_gmt; 
      #add_header Cache-Control 'private no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'; 
      #if_modified_since off; 
      #expires off; 
      #etag off; 

      # kill proxy cache, even if cached, don't try to use it 
      proxy_no_cache 1; 
      proxy_cache_bypass 1; 

      server { 
       listen 80; 
       listen [::]:80; 

       server_name a.app.uat.us.pic.com; 

       location =/{ 
        return http://a.app.uat.us.pic.com/app-a/; 
       } 
       location /app/ { 
         proxy_pass http://uat-client-appservers.us.pic.com:80/app-a/; 
       } 
       location /app-handler/ { 
         proxy_pass http://uat-client-appservers.us.pic.com:80/app-handler-a/; 
       } 
      } 
    }