Nginx服务器下配置个性二级域名及多个域名的实例讲解

个性二级域名
配置下个性化二级域名.
效果:
访问的URL http://custom.jb51.net
实际的URL http://www.jb51.net/auth/custom

我们的做法就是通过服务器配置,将访问的url转换为实际的url

下面我们来用nginx配置。配置如下:

server {
    listen    80;
    server_name *.jb51.net;
    if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
      set $subdomain $1;
    }
    location / {
      rewrite ^/$ /auth/$subdomain last;
      proxy_pass http://www.jb51.net/;
    }
  }

其中的if,是用于过滤某些特殊的二级域名,比如www,然后获取二级域名的变量值。

rewrite转化为对应的目录

rewrite ^/$ /auth/$subdomain last;

再加上nginx的反向代理功能:

proxy_pass http://www.jb51.net/;
就可以实现了。

这样配置之后,除了if中过滤的二级域名,其他的二级域名{sudomain}.jb51.net,对于服务器,其真实的路径都是www.jb51.net/auth/{sudomain}。

如果url有多种路径规则,则需要一一进行配置。

多域名配置
  nginx绑定多个域名可又把多个域名规则写一个配置文件里,也可又分别建立多个域名配置文件,我一般为了管理方便,每个域名建一个文件,有些同类域名也可又写在一个总的配置文件里。
一、每个域名一个文件的写法
       首先打开nginx域名配置文件存放目录:/usr/local/nginx/conf/servers ,如要绑定域名www.jb51.net 则在此目录建一个文件:www.your-domain.conf然后在此文件中写规则,如:server

{

listen
80;
server_name
www.jb51.net;
 #绑定域名

index
 index.htm index.html index.php; #默认文件

root
 /home/www/jb51.net; #网站根目录

include
 location.conf; #调用其他规则,也可去除

}

然后重起nginx服务器,域名就绑定成功了nginx服务器重起命令:/etc/init.d/nginx restart
二、一个文件多个域名的写法
一个文件添加多个域名的规则也是一样,只要把上面单个域名重复写下来就ok了,如:server

{

listen
80;

server_name

bbs.jb51.net;
 #绑定域名

index
 index.htm index.html index.php; #默认文件

root
 /home/www/bbs.jb51.net;
 #bbs目录

include
 location.conf; #调用其他规则,也可去除

}server

{

listen
80;

server_name

www.jb51.net;
 #绑定域名

index
 index.htm index.html index.php; #默认文件

root
 /home/www/www.jb51.net;
 #网站根目录

include
 location.conf; #调用其他规则,也可去除

}

三、不带www的域名加301跳转
如果不带www的域名要加301跳转,那也是和绑定域名一样,先绑定不带www的域名,只是不用写网站目录,而是进行301跳转,如:

server

{

listen
80;

server_name

jb51.net;

rewrite
 ^/(.*) http://www.jb51.net/$1 permanent;

}

四、添加404网页

添加404网页,都可又直接在里面添加,如:

server

{

listen
80;

server_name
 www.jb51.net; #绑定域名

index
 index.htm index.html index.php; #默认文件

root
 /home/www/jb51.net; #网站根目录

include
 location.conf; #调用其他规则,也可去除

error_page
404

/404.html;

}

学会上面四种规则方法,基本就可以自己独立解决nginx 多域名配置问题了

(0)

相关推荐

  • Nginx下301重定向域名的方法小结

    linux中nginx 301重定向跳转方法总结,有需要的朋友可参考一下. 第一种情况:访问aaaaaaa站定向到bbbbbbbbbbb站 复制代码 代码如下: server { server_naaaaaaame www.aaaaaaa.com ; rewrite ^(.*) http://www.bbbbbbbbbbb.com$1 permaaaaaaanent; } 第二种情况:不是访问aaaaaaa站的全部重定向到指定页面 复制代码 代码如下: server { server_naaaa

  • Nginx用户认证配置方法详解(域名/目录)

    Nginx可以为某一个域名单独加用户认证,具体做法如下: 1. 生成用户认证的用户名和密码: 复制代码 代码如下: #wget -c soft.vpser.net/lnmp/ext/htpasswd.sh;bash htpasswd.sh 根据提示输入: 用户名:密码:文件名: 脚本会自动生成认证文件,auth.conf内容如下: 复制代码 代码如下: /usr/local/nginx/conf/auth.conf 2. 为Nginx添加auth认证配置 下面以某域名下面的auth目录为例,在域

  • windows下Nginx多域名简单配置教程

    本文实例为大家分享了Nginx多域名的简单配置教程,供大家参考,具体内容如下 1. windows下安装nginx的目录结构如下: 2. 在nginx-1.12.1目录下conf/nginx.conf 内容 #user nobody; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile o

  • nginx将泛解析的匹配域名绑定到子目录配置方法

    网站的目录结构为: # tree /home/wwwroot/exehack.net /home/wwwroot/exehack.net ├── bbs │   └── index.html └── www     └── index.html 2 directories, 2 files /home/wwwroot/exehack.net为nginx的安装目录下默认的存放源代码的路径. bbs为论坛程序源代码路径:www为主页程序源代码路径:把相应程序放入上面的路径通过:http://www.

  • 详细nginx多域名配置的方法

    前言 Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,nginx多域名配置是在配置文件中建立多个server配置,在每个server配置中用server_name来对域名信息进行过滤. 实现方法如下: 举个例子,下面是一个conf文件: server { listen 80; server_name www.web1.com; #绑定域名 index index.htm index.html index.php; #默认文件 root /home/www.web1.

  • Nginx实现根据域名http、https分发配置示例

    tomcat端口:8080 做好虚拟主机 nginx端口:80 根据域名分派 在conf/nginx.conf中的http中增加 复制代码 代码如下: include www.jb51.net.conf 新建conf/www.jb51.net.conf,内容如下: 复制代码 代码如下: server { listen 80; server_name www.jb51.net; location / {     proxy_pass http://127.0.0.1:8080;     proxy

  • nginx中域名、目录的301重定向配置示例

    301重定向不陌生, 有时候有需求把某目录整个重定向到一个二级域名,或者不带www的顶级域名请求全部重定向到带www的二级域名.如果是Apache,需要配置.htaccess,nginx不支持,需要在配置文件里面使用rewrite指令来实现. 顶级域名重定向到www 复制代码 代码如下: server {  server_name jb51.net;  rewrite ^/(.*)$ http://www.jb51.net/$1 permanent;  } 如上配置,所以jb51.net的请求都

  • Nginx批量添加二级子域名完美方案

    对于批量添加虚拟主机的需求,Apache 有 vhost_alias 模块帮忙.Nginx 呢?其实神马都不需要,同样可以实现 Nginx 二级域名匹配子文件夹,且不匹配 "www",但可以匹配包含 "www" 的子域名. 首先看看目前网上搜到的方法. 复制代码 代码如下: if ( $host ~* (.*)\.(.*)\.(.*)) {  set $subdomain $1; } location / {  root  html/$subdomain;  ind

  • Nginx 禁止IP访问 只允许域名访问

    我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了.下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时 候生效最关键的一点是,在server的设置里面添加这一行: listen 80 default; 后面的default参数表示这个是默认虚拟主机. Nginx 禁止IP访问这个设置非常有用. 比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回50

  • Nginx服务器中HTTP 301跳转到带www的域名的方法

    从nginx的官方文档 documentation, 正确的nginx https 301跳转到带www域名方法的方法如下: HTTP 301跳转到带www域名方法 复制代码 代码如下: server {         listen       80;         server_name  example.org;         return       301 http://www.example.org$request_uri;     } server {         list

随机推荐