2012-06-14 5 views
0

"be"경로에서 웹 응용 프로그램을 실행중인 Tomcat 6이 있습니다. Spring 보안은 로그인 프로세스에 사용됩니다. 로그인 URL은 /console/login이며 로그인하면 /console/customer으로 리디렉션됩니다. 나는 login URL에 https를 사용하고 customer URL에 http를 사용합니다. 스프링 구성 파일에는 서블릿 경로를 지정하지 않습니다. 모두 제대로 작동하고 /be/console/login에 액세스 한 후 올바른 리디렉션()이 수신되었습니다.nginx 프록시 서블릿 경로 추가

이제 프록시를 갖고 싶습니다. 나는 을 https://<someip>:9443으로 전달하고 http를 포트 80에서 9080으로 전달하도록 Nginx를 구성했습니다.

Nginx는 브라우저로의 잘못된 리디렉션을 반환하고 있습니다. 대신 은 /be/be/console/customer을 반환합니다. 서블릿 경로가 URL에 두 번 추가됩니다.

두 번째 '제거'는 어떻게 제거 될 수 있습니까?

감사합니다.

의 Nginx의 설정 :

server { 
    listen  443 ssl; 
    server_name localhost; 

    ssl     on;   
    ssl_certificate  C:\jc\\nginx\\tc\selfsigned.cer; 
    ssl_certificate_key C:\jc\\nginx\\tc\private.key; 

    ssl_session_timeout 5m; 

    ssl_protocols SSLv2 SSLv3 TLSv1; 
    ssl_ciphers HIGH:!aNULL:!MD5; 
    ssl_prefer_server_ciphers on; 

    location/{ 
      proxy_redirect   off; 
      proxy_pass    https://<some ip>:9443; 
      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 ~ /.+ { 
      proxy_redirect   off; 
      proxy_pass    https://<some ip>:9443; 
      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; 
    } 
} 
server { 
    listen  80; 
    server_name localhost; 

    access_log logs/access.log; 
    error_log logs/error.log; 

    location/{     
      proxy_redirect   off; 
      #server_name_in_redirect off; 
      proxy_pass    http://<some ip>:9080;    
      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 ~ /.+ { 
      proxy_redirect   off;     
      proxy_pass    http://<some ip>:9080; 
      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; 
    } 
} 

답변

0

이 구성은 생산에 노력하고 있습니다 :

location /demo/ { 
    proxy_pass http://localhost:8080; 
    proxy_redirect  off; 

    proxy_set_header Host    $host; 
    proxy_set_header X-Real-IP  $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_pass_request_headers on; 

    client_max_body_size  10m; 
    client_body_buffer_size 128k; 

    proxy_connect_timeout  90; 
    proxy_send_timeout   90; 
    proxy_read_timeout   90; 

    proxy_buffer_size   4k; 
    proxy_buffers    4 32k; 
    proxy_busy_buffers_size 64k; 
    proxy_temp_file_write_size 64k; 
} 
+0

proxy_pass_request_headers 기본 및 (다른 PARAM의) 나머지으로 설정되어는 성능과 관련된 구성입니다. 따라서 문제는 훨씬 더 복잡합니다. – Dima