zoukankan      html  css  js  c++  java
  • 前端虚拟服务器

    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;//格式为:X-Forwarded-For: client, proxy1, proxy2
            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/
    }
    

      

  • 相关阅读:
    VBS发送邮件-1
    docker命令
    NLP | 自然语言处理
    windows: Python安装scipy,scikit-image时提示"no lapack/blas resources found"的解决方法
    Sense2vec with spaCy and Gensim
    python 去停用词
    nohup command > myout.file 2>&1 &
    NLTK vs SKLearn vs Gensim vs TextBlob vs spaCy
    Gensim进阶教程:训练word2vec与doc2vec模型
    Gensim入门教程
  • 原文地址:https://www.cnblogs.com/wlemory/p/5668686.html
Copyright © 2011-2022 走看看