彩世界平台-彩世界时时app-彩世界开奖app苹果下载

热门关键词: 彩世界平台,彩世界时时app,彩世界开奖app苹果下载

您的位置:彩世界平台 > 活动会议 > 【nginx】一台nginx服务器多域名配置

【nginx】一台nginx服务器多域名配置

发布时间:2019-10-05 11:38编辑:活动会议浏览(101)

    配置服务器 —— Nginx添加多个二级子域名,nginx子域名

    Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了。
    下面说说server_name的使用吧:
    server_name的匹配顺序
    Nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为:
    1、准确的server_name匹配,例如:

    Nginx多文件配置二级子域名(推荐)


    首先,在自己的域名控制台中添加解析,这里以添加blog前缀为例

    我用的是万网,在 解析设置添加解析

    主机记录:你想要的二级域名
    记录值:你的IP地址

    保存后,我们就完成了第一步把子域名解析到我们的服务器上。


    第二步:添加配置文件

    进入nginx的 /conf 配置文件夹中,编辑 nginx.conf 文件

    [root@iZ2844brz0xZ ~]# cd /usr/local/nginx/conf/
    [root@iZ2844brz0xZ ~]# vim nginx.conf
    

    http 模块中添加如下语句

    include /usr/local/nginx/conf/sites-enabled/*.conf;
    

    告诉这个配置文件要去包含 /sites-enabled 目录下的所有以 .conf 结尾的配置文件。:wq 保存。

    此时,我们新建一个 /sites-enabled 文件夹,并在其中添加 blog.***.com.conf 文件

    [root@iZ2844brz0xZ conf]# mkdir sites-enabled
    [root@iZ2844brz0xZ sites-enabled]# vim blog.***.com.conf
    

    在文件中添加

    server {
        listen 80;                              #监听端口
        server_name blog.***.com;               #绑定域名
        root /usr/local/nginx/html/blog/;       #网站根目录,建议使用绝对路径
        index index.php index.html index.htm;   #默认文件
    
        #添加对php的解析
        location ~ .php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        /usr/local/nginx/conf/fastcgi_params;
        }
    
        #添加错误页面,利于搜索引擎收录以及良好的用户体验
        error_page 404 /404.html;
        location /404.html {
            root /usr/local/nginx/html/;
        }
    
        error_page 500 502 503 504 /50x.html;
        location =/50x.html {
            root /usr/local/nginx/html/;
        }
    }
    

    内容可自行添加


    server {
    listen 80;
    server_name ssdr.info www.ssdr.info;
    ...
    }
    

    Nginx单文件配置二级子域名

    nginx.conf 文件的 server 模块中添加以下语句

    if ( $host ~* (b(?!wwwb)w+).w+.w+ ) {
     set $subdomain /$1;
    }
    location / {
     root html$subdomain;
     index index.html index.php index.htm index;
    }
    

    即可解析到对应文件夹


    最后,重启nginx即可

    [root@iZ2844brz0xZ sites-enabled]# /usr/local/nginx/sbin/nginx -s reload
    

    2、以*通配符开始的字符串:

    server {
    listen 80;
    server_name *.ssdr.info;
    ...
    }
    

    3、以*通配符结束的字符串:

    server {
    listen 80;
    server_name www.*;
    ...
    } 
    

    4、匹配正则表达式:

    server {
    listen 80;
    server_name ~^(?.+).howtocn.org$;
    ...
    }
    

    Nginx将按照1,2,3,4的顺序对server name进行匹配,只有有一项匹配以后就会停止搜索,所以我们在使用这个指令的时候一定要分清楚它的匹配顺序(类似于location指令)。
    server_name指令一项很实用的功能便是可以在使用正则表达式的捕获功能,这样可以尽量精简配置文件,毕竟太长的配置文件日常维护也很不方便。下面是2个具体的应用:
    在一个server块中配置多个站点:

    server
    {
    listen 80;
    server_name ~^(www.)?(.+)$;
    index index.php index.html;
    root /data/wwwsite/$2;
    }
    

    站点的主目录应该类似于这样的结构:

    /data/wwwsite/ssdr.info/data/wwwsite/linuxtone.org

    /data/wwwsite/baidu.com/data/wwwsite/google.com
    这样就可以只使用一个server块来完成多个站点的配置。
    在一个server块中为一个站点配置多个二级域名 。
    实际网站目录结构中我们通常会为站点的二级域名独立创建一个目录,同样我们可以使用正则的捕获来实现在一个server块中配置多个二级域名:

    server
    {
    listen 80;
    server_name ~^(.+)?.howtocn.org$;
    index index.html;
    if ($host = ssdr.info){
    rewrite ^ http://www.ssdr.info permanent;
    }
    root /data/wwwsite/ssdr.info/$1/;
    } 
    

    站点的目录结构应该如下:

    /data/wwwsite/ssdr.info/www//data/wwwsite/ssdr.info/nginx/
    这样访问www.ssdr.info时root目录为/data/wwwsite/ssdr.info/www/,nginx.ssdr.info时为/data/wwwsite/ssdr.info/nginx/,以此类推。
    后面if语句的作用是将ssdr.info的方位重定向到www.ssdr.info,这样既解决了网站的主目录访问,又可以增加seo中对www.ssdr.info的域名权重。
    多个正则表达式
    如果你在server_name中用了正则,而下面的location字段又使用了正则匹配,这样将无法使用$1,$2这样的引用,解决方法是通过set指令将其赋值给一个命名的变量:

    server
    {
    listen 80;
    server_name ~^(.+)?.howtocn.org$;
    set $www_root $1;
    root /data/wwwsite/ssdr.info/$www_root/;
    location ~ .*.php?$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /data/wwwsite/ssdr.info/$fastcgi_script_name;
    include fastcgi_params;
    }
    }
    

    Nginx不同域名反向代理到另一台服务器 proxy_pass和$host
    想让一个VPS专门做另一个VPS的前端,后端VPS每添加一个域名,前端VPS就要同时添加一个域名来反向代理,作为前端的VPS如果一个一个的添加后端VPS的域名,那么这个事情特别麻烦,能不能让其自动反向代理后端VPS呢,用到proxy_pass和$host就可以轻松实现。
    以下例子为了省事,以lnmp为安装环境进行设置
    修改前端VPS的nginx.conf文件,修改成以下内容:

    本文由彩世界平台发布于活动会议,转载请注明出处:【nginx】一台nginx服务器多域名配置

    关键词: