以下配置可以将动态请求交给后台的tomcat
http://test.test.com/HelloWorld.jsp
类似以上的请求,经过测试,并不会因为 proxy_pass http://localhost:9081;受到影响,照样是可以取到完整的请求路径,不会得到localhost:9081这样的。
一个完整的配置
启动
/user/local/nginx/sbin/nginx
重启
/user/local/nginx/sbin/nginx -s reload
停止
/user/local/nginx/sbin/nginx -s stop
停止
ps -ef | grep nginx
强制停止Nginx
pkill -9 nginx
以下是几个伪静态的例子
正则表达式匹配,其中:
* ~ 为区分大小写匹配
* ~* 为不区分大小写匹配
* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
文件及目录匹配,其中:
* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行
flag标记有:
* last 相当于Apache里的[L]标记,表示完成rewrite
* break 终止匹配, 不再匹配后面的规则
* redirect 返回302临时重定向 地址栏会显示跳转后的地址
* permanent 返回301永久重定向 地址栏会显示跳转后的地址
集群的配置更简单,在http节点内添加
然后转发到proxy_pass http://myblance;
反向代理做镜像
以上代理,后台服务器可能拿到的ip不大对,以下更合适些
location ~*\.(jsp|do|action)$
{
index index.jsp;
proxy_pass http://localhost:9081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~^/(WEB-INF)/{
deny all;
}
http://test.test.com/HelloWorld.jsp
类似以上的请求,经过测试,并不会因为 proxy_pass http://localhost:9081;受到影响,照样是可以取到完整的请求路径,不会得到localhost:9081这样的。
一个完整的配置
server {
listen 80;
server_name www.frady.info *.frady.info;
root /webapps/yoursite/;#此处定义了域名的根目录
location / {
index index.html index.htm index.action;
}
location ~ .*.(gif|jpg|jpeg|png|bmp|swf|css|js|html)$ {
expires 30d;
}
location ~*.(jsp|do|action)$
{
index index.jsp;
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~^/(WEB-INF)/{
deny all;
}
}
启动
/user/local/nginx/sbin/nginx
重启
/user/local/nginx/sbin/nginx -s reload
停止
/user/local/nginx/sbin/nginx -s stop
停止
ps -ef | grep nginx
强制停止Nginx
pkill -9 nginx
以下是几个伪静态的例子
#以下可以把/helo-frady-mypass.html转发到/hello.action?mts=frady&pwd=mypass
#两个一起使用的话,这个得放到前面
rewrite "^/hello-([a-z0-9\_]+)-([a-z0-9\_]+)(.*)\.html" /hello.action?mts=$1&pwd=$2;
#以下可以把/helo-frady.html转发到/hello.action?mts=frady
rewrite "^/hello-([a-z0-9\_]+)(.*)\.html" /hello.action?mts=$1;
if (!-f $request_filename){
rewrite (.*) /hello.action; #此配置需要放到location里
}
if (!-e $request_filename) {
rewrite ^/(.+\.(html|xml|json|htm|php|jsp|asp|shtml))$ /hello.action last;
}
rewrite ^/product/([0-9]+)\.html$ /showWare.action?ware.wareId=$1 last;
location / {
index index.html index.htm;
if (!-f $request_filename){
rewrite (.*) /template.action;
}
}
正则表达式匹配,其中:
* ~ 为区分大小写匹配
* ~* 为不区分大小写匹配
* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
文件及目录匹配,其中:
* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行
flag标记有:
* last 相当于Apache里的[L]标记,表示完成rewrite
* break 终止匹配, 不再匹配后面的规则
* redirect 返回302临时重定向 地址栏会显示跳转后的地址
* permanent 返回301永久重定向 地址栏会显示跳转后的地址
集群的配置更简单,在http节点内添加
upstream myblance {
server 192.169.1.100:8080;
server 192.169.1.100:28080;
ip_hash;#可以实现固定ip访问到固定的后台,解决session的问题
}
然后转发到proxy_pass http://myblance;
反向代理做镜像
server
{
listen 80;
server_name www.frady.com;
location / {
proxy_pass http://www.abctest.cn/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
以上代理,后台服务器可能拿到的ip不大对,以下更合适些
server {
listen 80;
server_name *.frady.info ;
location /
{
index index.jsp;
proxy_pass http://mybalance;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}