在维护 codecasts 期间,遇到很多次“一个 nginx 如何配置多个站点” 的问题,我通常的回复就是:多添加一个 server 的 block 配置就好了,然而很多同学还是没能配置成功,今天我们仔细来看看在 一台 Ubuntu 的服务器中,如何在 nginx 在配置多个站点。

1. 安装 Nginx

在 Ubuntu 中,你可以直接通过 apt-get 命令来安装 Nginx:

sudo apt-get install nginx

2.创建新的文件路径

在安装完新的 Nginx 之后,针对多个站点的配置,其实我们可以设置不同的 root 来返回不同的内容:

  1. sudo mkdir -p /var/www/domain-one.com/html
  2. sudo mkdir -p /var/www/domain-two.com/html

以上的命令就会创建两个对应的目录:主要将 domain-one.com 和 domain-two.com 换成你自己的域名。然后再将这两个文件夹给定权限和所有权:

  1. sudo chown -R www-data:www-data /var/www/domain-one.com/html
  2. sudo chown -R www-data:www-data /var/www/domain-two.com/html

上面的 www-data:www-data 就是 Nginx 默认的用户组合用户名。

3.创建不同的入口文件

在这里为了演示方便,我们可以直接在第二步的两个目录中分别创建 index.html 文件:

sudo vim /var/www/domain-one.com/html/index.html

然后添加下面的内容:

  1. <html>
  2. <head>
  3. <title>Welcome to Domain-one.com!</title>
  4. </head>
  5. <body>
  6. <h1>Success! The Domain-one.com server block is working!</h1>
  7. </body>
  8. </html>

对应的 domain-two.com 我们可以这样:

sudo vim /var/www/domain-two.com/html/index.html

在 domain-two.com 这里添加下面的内容:

  1. <html>
  2. <head>
  3. <title>Welcome to Domain-two.com!</title>
  4. </head>
  5. <body>
  6. <h1>Success! The Domain-two.com server block is working!</h1>
  7. </body>
  8. </html>

主要上面的内容主要是用 domain-one 和 domain-two 来区分,在你照着文章实践的时候,记得替换成你自己的域名,如何你仅仅是学习目的的话: 推荐你去买腾讯云的香港主机(香港主机不用备案),趁着双十一活动便宜!

4.创建不同的配置文件

在安装完 Nginx 之后,其实 Nginx 的默认配置文件实在 /etc/nginx/sites-available/default 的,但是我们要配置多站点的话,可以这样:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/domain-one.com

然后编辑 /etc/nginx/sites-available/domain-one.com 配置文件:

sudo vi /etc/nginx/sites-available/domain-one.com

删除原来所有的配置内容,添加下面的配置:

  1. server {
  2. listen 80;
  3. listen [::]:80;
  4. root /var/www/domain-one.com/html;
  5. index index.html index.htm index.nginx-debian.html;
  6. server_name domain-one.com www.domain-one.com;
  7. location / {
  8. try_files $uri $uri/ =404;
  9. }
  10. }

这样就配置完 domain-one.com 了,如果你需要配置 SSL 的话,一样是在 /etc/nginx/sites-available/domain-one.com 这个文件配置就好。接下来就照葫芦画瓢,我们创建 domain-two.com 的配置文件:

sudo cp /etc/nginx/sites-available/domain-one.com /etc/nginx/sites-available/domain-two.com

以上命令就会复制出 domain-two.com 的配置文件,然后编辑该文件:

sudo vi /etc/nginx/sites-available/domain-two.com

主要在这个文件里面主要是将 domain-one.com 改为 domain-two.com; 然后,root 也注意一下:

  1. server {
  2. listen 80;
  3. listen [::]:80;
  4. root /var/www/domain-two.com/html;
  5. index index.html index.htm index.nginx-debian.html;
  6. server_name domain-two.com www.domain-two.com;
  7. location / {
  8. try_files $uri $uri/ =404;
  9. }
  10. }

这样我们的两个域名配置文件就设置好了,最后我们需要将原来 Nginx 的 default 配置删除:

sudo rm etc/nginx/sites-available/default

注意这里是要删除的!

5.建立软链接

有了 domain-one.com 和 domain-two.com 的配置之后,我们需要把这两个配置告知 Nginx :

  1. sudo ln -s /etc/nginx/sites-available/domain-one.com /etc/nginx/sites-enabled/
  2. sudo ln -s /etc/nginx/sites-available/domain-two.com /etc/nginx/sites-enabled/

执行上面的命令之后,我们再使用 nginx -t 检测 Nginx 的配置文件是否有错:

sudo nginx -t

如果你没有看到报错,就可以直接重启 Nginx 服务了:

sudo service nginx restart

这样就大功告成啦!访问你的域名试试!!!

Ubuntu Nginx 配置多站点相关推荐

  1. 《Laradock》Nginx配置多站点多项目

    <Laradock>Nginx配置多站点多项目 1.在laradock/nginx 目录下新建一个vhost目录. 2.复制laradock/nginx/sites/default.con ...

  2. Ubuntu nginx 配置实例

    安装nginx sudo apt-get install nginx cd /etc/nginx/sites-enabled vi rec_proxy upstream rec_proxy {serv ...

  3. ubuntu nginx配置负载均衡篇(一)

    Nginx 代理服务的配置说明 1.设置 404 页面导向地址 error_page 404 https://www.runnob.com; #错误页 proxy_intercept_errors o ...

  4. ubuntu nginx配置虚拟主机,目录

    在/etc/nginx/sites-available/ 创建www.myangelmylove.com(你的dns的名字)文件 1 server { 2 listen 80; ## listen f ...

  5. ubuntu nginx创建多站点配制

    安装完成nginx后,我们网站目录默认在/var/www,默认一个站点的,多个站点需要在/var/www中创建多个站点.我们一般以域名方式创建一个站点目录,然后设置站点目录权限(使用管理员账号操作), ...

  6. ubuntu nginx配置负载均衡篇(二)

    这里提供部分我的配置文件: nginx.conf: user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/ngi ...

  7. 阿里云nginx服务器多站点的配置

    Fighting! 欲戴皇冠,必承其重! 目录视图 摘要视图 订阅 [活动]Python创意编程活动开始啦!!!    CSDN日报20170426 --<四无年轻人如何逆袭>    [C ...

  8. Ubuntu下配置Nginx HTTPS

    HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入S ...

  9. Ubuntu Linux配置Nginx+MySQL+PHP+phpMyAdmin详细步骤

    博主之前一直用的是apache,随着网站负荷量增高,感觉apache稍微有点力不从心了.随着nginx越来越流行,而且其功能强大,博主准备采用nginx作为自己的服务器啦. 每当到了环境配置的时候,博 ...

最新文章

  1. python的工资待遇-python数据分析师待遇有多少?工资待遇如何?
  2. Xgboost调参小结
  3. 关于通配泛型类型有几种_5.7 泛型通配符和类型参数的范围
  4. sys.getsizeof(), 字节之间的换算关系
  5. pytorch 模型可视化_【深度学习】高效使用Pytorch的6个技巧:为你的训练Pipeline提供强大动力...
  6. java爬虫代码示例_那些让你代码思维和能力有较大的提升Java源码
  7. Bokeh 增加交互方式
  8. WIN7部分程序中文乱码的简单解决方法
  9. c语言超经典矩阵式键盘的接法,c语言超经典矩阵式键盘的接法,流程图和扫描程序...
  10. 请不要再用那种态度把我搞火了!
  11. 网络基本功(一):细说网络传输(图文详解)
  12. 两种实现九九乘法表的vb代码
  13. 智能化施工(综合管线)
  14. 模式分解无损连接判断——数据库考试复习
  15. “盛大游戏杯”—K 购买装备
  16. JS 基础: 你真的了解 console 吗?
  17. window检测到计算机,Windows检测到一个硬盘问题怎么办
  18. 在Mac上开启AptX
  19. linux入门学习(3权限管理)
  20. RGB与Ycbcr空间的互相转换

热门文章

  1. IP Tracker 追踪
  2. 计算机 继续教育培训心得体会,继续教育培训学习心得3篇
  3. 初识 Swift编程语言(中文版)
  4. 实践--简版知乎日报
  5. 《ZeroC Ice 权威指南》笔记
  6. 【校招VIP】产品经理面试之回答技巧
  7. mysql 数据挖掘工具_Armory:一款外部数据挖掘与分析工具
  8. 如何用 docker 打造前端开发环境
  9. 怎样使用CSS设置文字与文字间距距离?
  10. mysql事件和计划任务