仅通过8080端口访问jsp显然不是一算是一个太好的方法,可以使用nginx的proxy_pass子模块,实现nginx转发jsp请求至tomcat。
典型的配置如下:
1 server { 2 listen 80 ; 3 server_name domain; 4 root /data/web/domain ; 5 access_log logs/domain/ access.log; 6 7 location / { 8 index index.jsp; 9 } 10 11 location ~ \.jsp$ { 12 proxy_pass http: // domain:8080; 13 proxy_set_header X-Real- IP $remote_addr; 14 proxy_set_header X-Forwarded- For $proxy_add_x_forwarded_for; 15 proxy_set_header Host $http_host; 16 } 17 18 location @CustomContext { 19 sendfile off; 20 proxy_pass http: // domain:8080; 21 proxy_redirect default; 22 23 proxy_set_header Host $host; 24 proxy_set_header X-Real- IP $remote_addr; 25 proxy_set_header X-Forwarded- For $proxy_add_x_forwarded_for; 26 proxy_max_temp_file_size 0 ; 27 28 } 29 30 location ~ " ^/manager/* " { 31 try_files $uri @CustomContext; 32 } 33 34 location ~ " ^/test/* " { 35 try_files $uri @CustomContext; 36 } 37 38 location ~* \.(gif|jpg| png)$ { 39 access_log off; 40 expires 30d; 41 } 42 43 location ~ / \.ht { 44 deny all; 45 } 46 }
其中:
Line11-Line19,一段常规的转发配置,将请求转发至同名的8080端口;
Line18-Line28,是一段特殊的配置信息,定义了一个针对Context应用目录的转发规则。因为当你直接转发"http://domain:8080/directory"时,会报配置文件错误,因为proxy_pass并不能转发目录;
Line30-Line32及Line34-Line36,定义了两个目录的转发规则,将对该目录下文件的请求,转发至上面自定义的目录转发规则。