nginx中一台服务器单iP多域名配置

nginx中一台服务器单iP多域名配置

Nginx中一台服务器单IP多域名配置方法

一、每个域名一个文件的配置方法

  1. 创建域名配置文件
  2. 首先打开nginx域名配置文件存放目录(例如:/usr/local/nginx/conf/servers),如果要绑定域名如www.itblood.com,则在此目录下建立一个文件:www.itblood.com.conf。
  3. 编写配置规则
  4. 在该文件中编写规则,例如:
    • listen 80;
    • server_name www.itblood.com; #绑定域名
    • index index.htm index.html index.php; #默认文件
    • root /home/www/itblood.com; #网站根目录
    • include location.conf; #调用其他规则,也可去除
  5. 重启nginx服务器
  6. 使用命令(如在CentOS系统下):/etc/init.d/nginx restart,这样域名就绑定成功了。

二、一个文件多个域名的配置方法

  1. 编写配置规则
  2. 在同一个配置文件中添加多个域名的规则,只要把单个域名的配置重复写下来即可。例如:
    • server{ include location.conf; #调用 listen 80; server_name www.domain1.com; #绑定域名1 index index.htm index.html index.php; root /home/www/domain1.com; } server{ include location.conf; #调用 listen 80; server_name www.domain2.com; #绑定域名2 index index.htm index.html index.php; root /home/www/domain2.com; }
  3. 注意事项
  4. 在Nginx的配置文件中只有一个server配置的时候,server_name是无效的,也就是说任何域名绑定了这个IP的时候,无论server_name填什么域名,都会匹配到这个唯一的server。只有在多个server的时候,server_name才会有效。

三、利用server_name指令的匹配特性进行配置

  1. server_name指令匹配顺序
  2. Nginx中的server_name指令在接到请求后的匹配顺序有多种情况。例如,可能有精确匹配、通配符匹配和正则表达式匹配等情况。
  3. 假设配置如下:
    • listen 80; server_namessdr.infowww.ssdr.info; server{ server_name www.*; server_name~^(?.+)\.howtocn\.org$; }
  4. Nginx将按照一定顺序(如1,2,3,4的顺序对server_name进行匹配),只要有一项匹配以后就会停止搜索,所以在使用这个指令的时候一定要分清楚它的匹配顺序(类似于location指令)。
  5. 利用正则表达式捕获简化配置
  6. 例如:
    • server server_name~^(www\.)?(.+)$; root/data/wwwsite/$2;
  7. 这种方式可以根据不同的域名结构,利用正则表达式的捕获功能来尽量精简配置文件,方便日常维护。
本篇文章所含信息均从网络公开资源搜集整理,旨在为读者提供参考。尽管我们在编辑过程中力求信息的准确性和完整性,但无法对所有内容的时效性、真实性及全面性做出绝对保证。读者在阅读和使用这些信息时,应自行评估其适用性,并承担可能由此产生的风险。本网站/作者不对因信息使用不当或误解而造成的任何损失或损害承担责任。
阅读全文