5.6. nginx多站点配置

5.6.1. Nginx多站点的配置

① 基于域名访问多站点
② 基于IP访问多站点
③ 基于端口访问多站点

参考文献:

Nginx 虚拟主机配置

在真实的服务器环境,为了充分利用服务器资源,一台nginx web服务器同时会配置N个虚拟域名主机, 即多个域名对于同样一个80(亦可以非常规)端口。然后服务器IP数量很多, 也可以配置基于多个IP对应同一个端口。

这里具体介绍两种种类,方法大概相同,实现结果不同。 方法一 需求:同个端口,访问域名不同,访问页面不同。

vim修改nginx.conf server段配置内容如下:

server {
        listen       80;
        server_name  www.a.com;
        #access_log  logs/host.access.log  main;
        location / {
            root   html/a;
            index  index.html index.htm;
        }

server {
        listen       80;
        server_name  www.b.com;
        #access_log  logs/host.access.log  main;
        location / {
            root   html/b;
            index  index.html index.htm;
        }

测试工作: 创建两个不同的目录mkdir –p /usr/local/nginx/html/{a,b}, 然后分别在两个目录创建两个不同的index.html网站页面即可。 通过客户端配置hosts指向两个域名,然后在IE浏览器访问测试效果。

参考文献:nginx配置基于域名的虚拟主机

方法二 需求:同个端口,访问一级域名相同,二级域名不同,访问页面不同。(根据域名后缀区分访问页面)

vim修改nginx.conf server段配置内容如下:

server {
        listen       8089;#####这里使用了非常规端口,只需要解析到以下使用到的sjb.suhuayue.com域名中即可

        server_name  sjb.suhuayue.com _;
        access_log  logs/host.access.log  main;
        error_log  logs/error.log;
location / {
        index  index.html index.htm;
               }
location ^~ /a/ {
            add_header X-Frame-Options DENY;
            proxy_set_header X-Client-Really-IP $remote_addr;
            alias /opt/qypay/a/;
            index  index.html index.htm;
           }

       location ^~ /b/ {
            add_header X-Frame-Options DENY;
            alias /opt/qypay/b/;
            proxy_set_header X-Client-Really-IP $remote_addr;
            index  index.html index.htm;
  }
}

配置解释:以上配置成功后,sjb.suhuayue.com/a/为页面一,sjb.suhuayue.com/b/为页面二。

注意几点:

1 以上配置文件中alias /opt/qypay/a/;这里必须以/结尾,因为你制定的是一个目录
2 如果现实页面的时候,页面能读取到,但是显示不出来,那么就是解析问题,可配合前端进行询问前端为哪种解析。
3 访问域名的时候,如下所诉相同,域名+location关键词 访问的时候,必须以/结尾,如:http://sjb.suhuayue.com/a/是正确的。http://sjb.suhuayue.com/a为错误的。

至此,基本上多站点访问配置也解释的差不多了。

5.6.2. Nginx静态资源服务器搭建

HTML 是一种标记语言,提供 HTML 文件读取是静态服务器最基本的功能,静态服务器的配置样例如下:

server {
    listen 8080;
    root /opt/nginx-web/www;                # 存放静态文件的文件目录
    location / {
        index index.html;
    }
    location /js {
        alias /opt/nginx-web/static/js/;    # 存放JavaScript文件的文件目录
        index index.html;
    }
}

在以上配置中,每个 server 指令域等同于一个虚拟服务器,每个 location 指令域等同于一个虚拟目录。