码迷,mamicode.com
首页 > 其他好文 > 详细

前端虚拟服务器

时间:2016-07-14 03:13:19      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

server {      //定义虚拟主机
    listen 80;
    server_name www.xxx.com api.xxx.com;

    access_log /srv/www/xxx.com/app/logs/www.xxx.com_access.log;
    error_log /srv/www/xxx.com/app/logs/www.xxx.com_error.log notice;

    rewrite ^/app\.php/?(.*)$ /$1 permanent;   //重写请求的URL,此处的功能是去掉app.php
    #rewrite ^/(.*)/$ /$1 permanent;

    root   /srv/www/xxx.com/web;
    error_page 500 502 504 /500.html;

    location ~* (/qrcode/(.*).png)$
    {
        proxy_set_header X-Real-IP $remote_addr;      //proxy_set_header:用于加工http header给后面被代理的服务器, X-Real-IP X-Forwarded-For都用于标识原IP, $remote_addr:用户的ip地址
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;             //$http_host目标地址
        proxy_pass_header Set-Cookie;                 //保留http头部的cookie字段
        proxy_pass http://backend;                    
    }

    location ~ ^/admin/.*
    {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass_header Set-Cookie;

        auth_basic            "Password please";
        auth_basic_user_file  /etc/nginx/htpasswd;

        proxy_pass http://backend;
    }

    location ~ .*\.(js|css|gif|jpg|jpeg|png|bmp|swf|ico)$
    {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass_header Set-Cookie;
        proxy_pass http://backend;
    }

    location ~* (/yyf-wheel(.*))$
    {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass_header Set-Cookie;
        proxy_pass http://lol;
    }

    location ~* (/index(.*)|/get/user|/product/(.*)|/usr/(.*))$
    {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass_header Set-Cookie;
        proxy_pass http://users;
    }

    location ~* (/invite/(.*)|/media/(.*)|/lib/responsive_filemanager/(.*))$
    {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass_header Set-Cookie;
        proxy_pass http://backend;
    }

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass_header Set-Cookie;
        proxy_pass http://dota2;
    }
}
  1.  Location匹配规则
    • =开头表示精确匹配
      如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。
    • ^~ 开头表示uri以某个常规字符串开头,不是正则匹配
    • ~ 开头表示区分大小写的正则匹配;
    • ~* 开头表示不区分大小写的正则匹配
    • / 通用匹配, 如果没有其它匹配,任何请求都会匹配到

顺序 no优先级:
(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (/)

上面的匹配结果
按照上面的location写法,以下的匹配示例成立:

    • / -> config A
      精确完全匹配,即使/index.html也匹配不了
    • /downloads/download.html -> config B
      匹配B以后,往下没有任何匹配,采用B
    • /images/1.gif -> configuration D
      匹配到F,往下匹配到D,停止往下
    • /images/abc/def -> config D
      最长匹配到G,往下匹配D,停止往下
      你可以看到 任何以/images/开头的都会匹配到D并停止,FG写在这里是没有任何意义的,H是永远轮不到的,这里只是为了说明匹配顺序
    • /documents/document.html -> config C
      匹配到C,往下没有任何匹配,采用C
    • /documents/1.jpg -> configuration E
      匹配到C,往下正则匹配到E
    • /documents/Abc.jpg -> config CC
      最长匹配到C,往下正则顺序匹配到CC,不会往下到E
所以实际使用中,个人觉得至少有三个匹配规则定义,如下:
#直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。
#这里是直接转发给后端应用服务器了,也可以是一个静态首页
# 第一个必选规则
location = / {
    proxy_pass http://tomcat:8080/index
}
# 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项
# 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {
    root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
    root /webroot/res/;
}
#第三个规则就是通用规则,用来转发动态请求到后端应用服务器
#非静态文件请求就默认是动态请求,自己根据实际把握
#毕竟目前的一些框架的流行,带.php,.jsp后缀的情况很少了
location / {
    proxy_pass http://tomcat:8080/
}

  

前端虚拟服务器

标签:

原文地址:http://www.cnblogs.com/wlemory/p/5668686.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!