前端虚拟服务器

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/
}

  

时间: 2024-10-10 21:47:29

前端虚拟服务器的相关文章

LVS (Linux虚拟服务器)

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. 宗旨 编辑 使用集群技术和Linux操作系统实现一个高性能.高可用的服务器. 很好的可伸缩性(Scalability) 很好的可靠性(Reliability) 很好的可管理性(Manageability).[1] 特点 编辑 可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份).我

LVS虚拟服务器的实现方式

一.LVS相关实验介绍 IP 负载均衡技术是在负载调度器的实现技术中效率最高的,LVS 的 IP 负载技术被广泛地应用各种不同的大型企业集群中,带来稳定.可靠的服务. 实验涉及的知识点 负载均衡解决方法 VS/NAT 实现虚拟服务器 VS/DR 实现虚拟服务器 VS/TUN 实现虚拟服务器 二.负载均衡的解决方法 在以软件实现的负载均衡的方式有: 基于应用层负载均衡 基于 IP 层负载均衡 其中基于应用层负载均衡:多台服务器通过高速的互联网络连接成一个集群系统,在前端有一个基于应用层的负载调度器

Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台 Seesaw

负载均衡系统 Seesaw Seesaw是由我们网络可靠性工程师用 Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台,就像所有好的项目一样,这个项目也是为了解决实际问题而产生的. Seesaw发布的博客中这样写道:“我们需要能够处理单播(unicast)和任播(anycast)虚拟 IP (VIPs) 流量,使用 NAT 和 DSR (也被称为 DR) 执行负载均衡,执行针对后端的健康检查.特别是,我们需要一个容易管理的平台,可以自动部署配置的变化.在评估了一些包括现有的开源项目的平台

让你的浏览器强制在后端服务器执行而不用通过前端CDN服务器

因为后端执行时间过长,前端不等待,导致提示504错误的解决办法 504 错误是因为你的CDN服务器设置的延时有限, 超时导致的504 是前端不等待中止,是前端不行,后端应该正常 502 错误是后端无应答,是后端不行,不是前端 在你的电脑C:\Windows\System32\drivers\etc\hosts 文件里面加以下代码(50.158.99.88为域名对应的IP,cnblogs.com为你的域名) 50.158.99.88 cnblogs.com 50.158.99.88 www.cnb

创建ACL语句使真机访问虚拟服务器的web服务并禁止访问FTP服务详解

创建ACL语句使真机访问虚拟服务器的web服务并禁止访问FTP服务 首先创建拓扑,然后规划好IP地址并连接拓扑线 配置理念是先配置简单的最后配置复杂的. 首先需要保证网络拓扑的互联互通:具体配置如下 R1上面的配置 SW3上面的配置 SW2上面的配置 SW1上面的配置 设置宿主机上的IP地址 打开虚拟机server 2008配置IP地址 给server 2008服务器 添加web服务和FTP服务 点击添加角色之后,再点击下一步,进入这个页面 再点击两次下一步,就会进入这个页面 后面根据提示点击下

LINUX虚拟服务器--LVS的搭建

本次实验做得是章文嵩博士创立的开源项目LVS(LinuxVirtual Server). Linux虚拟服务器,是一个虚拟的集群系统,目的是为了加强系统的可用性以及可伸缩性.本次实验使用四台虚拟机,其中两台作为提供服务的真机(real server)另外两台作调度器,实现ip负载均衡,其实实现ip负载均衡主要是有ipvs这个模块来实现的.LVS中有四种ip负载均衡技术,("VS/NAT"."VS/TUN"."VS/DR"."VS/FUL

路由器架设虚拟服务器让外网访问内网某电脑端口

本文将介绍如何通过路由器设置,让外网可以访问到内网中的某一台电脑,也可以是电脑上架设的本地网站.是在给客户发布网站的时候学到的,总结下来. 首先进入路由器,找到虚拟服务器: 点击添加新条目:在端口号的位置填写要访问的端口号,IP地址填写要访问的电脑的IP地址 保存后便生成一条记录 这样你在局域网中IP为192.168.1.8的地址中建立一个端口为8001的网站,就可以通过外网地址+端口号8001访问了. 版权声明:本文为博主原创文章,未经博主允许不得转载.

虚拟服务器使用E1000E类型的网卡,可能会 导致故障转移功能通信异常,不稳定

最近在搭建Windows Server 2012故障转移运行环境,计划在上面运行SQL Server 2012 AlwaysOn,虚拟服务器是运行在VMware ESXi 5.5.0平台上,发现如果虚拟服务器使用E1000E(下图)类型的网卡时,故障转移通信经常会出现故障,两台服务器互相ping时,偶尔有丢包:如果是使用E1000,VMXNET3类型的网卡,则故障转移通信正常,互ping也没有丢包.

从vmware workstation9.0中 上载虚拟服务器到ESXI

最近在本机(本人电脑)安装了一Centos6.9系统做测试,由于时间问题当时没考虑太多就在本机上安装了一个VMware9.0,但是后来感觉操作有许多不便之处,想到公司还有台ESXI,于是想到把系统转移到ESXI平台上. 考虑下,想到了用V2V实现转移,但是好像隐约记得VMware有个上载功能,于是想测试下,具体操作如下: 在vmware 中选择centos69右击,在出现的菜单中选择manage然后依次选择upload 在弹出的上载虚拟服务器向导对话框中选择新建服务器联接. 选择NEXT在出现的