当前位置 主页 > 服务器问题 > nginx问题汇总 >

一台nginx服务器怎么配置多域名?

栏目:nginx问题汇总 时间:2018-12-14 13:20

  Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了。
  下面我就来说说server_name的使用吧:
  server_name的匹配顺序
  Nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为:
  1、准确的server_name匹配,例如:
  server {
  listen 80;
  server_name ssdr.info www.ssdr.info;
  ...
  }
  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文件,修改成以下内容:
  server {
  listen 80;
  server_name $host;
  location / {
  proxy_pass http://www.31.gd/;
  proxy_set_header Host $host;
  proxy_redirect off;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_connect_timeout 60;
  proxy_read_timeout 600;
  proxy_send_timeout 600;
  }
  下面的一并修改吧。
  location /.(php|php5)?$
  {
  fastcgi_pass unix:/tmp/php-cgi.sock;
  fastcgi_index index.php;
  include fcgi.conf;
  }
  location /status {
  stub_status on;
  access_log off;
  }
  location /.(gif|jpg|jpeg|png|bmp|swf)$
  {
  expires 30d;
  }
  location /.(js|css)?$
  {
  expires 12h;
  }
  这样就可以实现了前端VPS可以反向代理任意域名到后端VPS,只要将域名解析到前端VPS,后端VPS进行域名绑定,那么就可以直接访问到了
  一台nginx带多个域名多个tomcat情况的配置
  多个域名,其中2个域名需支持泛域名解析:
  1、www.abc.com
  2、www.bcd.com
  3、*.efg.com
  4、*.hij.com
  其中1,2,3为一台tomcat,4为独立tomcat。前端一台nginx,通过配置多个虚拟主机来实现该部署。
  进入/etc/nginx/conf.d目录,所有虚拟主机的配置文件都在该目录下存放,配置。
  配置支持泛域名
  #
  # A virtual host using mix of IP-, name-, and port-based configuration
  #
  server {
  listen 81;
  server_name *.efg.com;
  location / {
  proxy_pass http://localhost:8080;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  }
  #
  # A virtual host using mix of IP-, name-, and port-based configuration
  #
  server {
  listen 81;
  server_name *.hij.com;
  location / {
  proxy_pass http://localhost:8081;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  }
  泛域名解析关键为红色部分,如果没有红色部分,后端8080及8081口对应的tomcat虚拟主机将无法获得域名信息,导致后端tomcat无法获取到对应的域名信息。
  后端TOMCAT支持泛域名解析时,需要设置 host name 为 localhost 以支持泛域名指向。
  Nginx 多域名配置
  nginx绑定多个域名可又把多个域名规则写一个配置文件里,也可又分别建立多个域名配置文件,我一般为了管理方便,每个域名建一个文件,有些同类域名也可又写在一个总的配置文件里。
  一、每个域名一个文件的写法
  首先打开 nginx域名配置文件存放目录:/usr/local/nginx/conf/servers ,如要绑定域名www.web126.com 则在此目录建一个文件:www.web126.com.conf 然后在此文件中写规则,如:
  server
  {
  listen 80;
  server_name www.web126.com; #绑定域名
  index index.htm index.html index.php; #默认文件
  root /home/www/web126.com; #网站根目录
  include location.conf; #调用其他规则,也可去除
  }
  然后重起nginx服务器,域名就绑定成功了。
  Nginx服务器重起命令:/etc/init.d/nginx restart。
  二、一个文件多个域名的写法
  一个文件添加多个域名的规则也是一样,只要把上面单个域名重复写下来就ok了,如:
  server
  {
  listen 80;
  server_name www.web126.com; #绑定域名
  index index.htm index.html index.php; #默认文件
  root /home/www/web126.com; #网站根目录
  include location.conf; #调用其他规则,也可去除
  }
  server
  {
  listen 80;
  server_name msn.web126.com; #绑定域名
  index index.htm index.html index.php; #默认文件
  root /home/www/msn.web126.com; #网站根目录
  include location.conf; #调用其他规则,也可去除
  }
  三、不带www的域名加301跳转
  如果不带www的域名要加301跳转,那也是和绑定域名一样,先绑定不带www的域名,只是不用写网站目录,而是进行301跳转,如:
  server
  {
  listen 80;
  server_name web126.com;
  rewrite ^/(.*) http://www.web126.com/$1 permanent;
  }
  四、添加404网页
  添加404网页,都可又直接在里面添加,如:
  server
  {
  listen 80;
  server_name www.web126.com; #绑定域名
  index index.htm index.html index.php; #默认文件
  root /home/www/web126.com; #网站根目录
  include location.conf; #调用其他规则,也可去除
  error_page 404 /404.html;
  }
  最后还有一个方法需要注意,可能有需要禁止IP直接访问80端口或者禁止非本站的域名绑定我们的IP,这样的话应该
  如下处理,放到最前一个server上面即可:
  server{
  listen 80 default;
  server_name _;
  return 403;
  }
  学会上面四种规则方法,基本就可以自己独立解决nginx 多域名配置问题了。
缩小 缩小 缩小 缩小
IIS7整站下载工具 IIS7批量查询排名 IIS7远程桌面连接工具 iis7-iis网站批量管理 iis7批量替换工具 IIS7服务器专用下载工具 IIS7日志分析工具 IIS7批量PING,服务器批量添加网卡IP小工具 IIS7远程同步备份工具
IIS7网站监控 站群批量SEO查询 批量获取排名域名 批量关键词排名查询 模拟各种蜘蛛 批量友情链接监测 批量检测死链 搜索引擎大全 批量查询外链
批量查询网站标题 批量查询KeyWords 批量查询描述 批量查询网站IP 批量百度收录查询 批量查询百度日收录 批量查询百度周收录 批量查询百度月收录 批量查询360总收录 批量查询360日收录 批量查询网站年龄 批量查询360PC权重 批量查询爱站移动权重 批量查询站长移动权重 批量查询360移动权重 批量查询神马权重 批量查询谷歌PR 批量查询搜狗PR 批量查询百度反链 批量查询爱站首页反链 批量查询爱站内页反链 批量查询百度快照 批量查询搜狗快照 批量icp备案查询 批量网站ip地址查询 批量查询导出链接 批量查询百度V认证 批量查询百度安全 批量查询站长PC权重 批量查询爱站PC权重 批量查询搜狗总收录 站长资源大全 IIS7-cms大全 IIS7站群大全 IIS7虚拟空间大全 IIS7服务器大全 IIS7-VPS大全