有时候你想在一台服务器上为不同的域名运行不同的站点。比如www.siteA.com作为博客,www.siteB.com作为论坛。你可以把两个域名的IP都解析到你的服务器上,但是没法在Nginx的根目录里同时运行两个不同的网站。这时候,你就需要使用虚拟目录了。假设你把博客放在”/home/user/www/blog”下,论坛放在”/home/user/www/forum”下。下面我们就开始配置了:

  • 在Nginx配置目录下,创建一个”vhost”目录。本例假设Nginx是默认安装,配置目录在”/etc/nginx”
$ sudo mkdir /etc/nginx/vhost
  • 创建siteA的配置文件
$ sudo vi /etc/nginx/vhost/vhost_siteA.conf
  • 输入以下配置信息
server {
listen 80; # 监听端口
server_name www.siteA.com siteA.com; # 站点域名
root /home/user/www/blog; # 站点根目录
index index.html index.htm index.php; # 默认导航页 location / {
# WordPress固定链接URL重写
if (!-e $request_filename) {
rewrite (.*) /index.php;
}
} # PHP配置
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
  • 同siteA一样创建siteB的配置文件,两者仅有的不同是”server_name”和”root”目录
$ sudo vi /etc/nginx/vhost/vhost_siteB.conf
server {
...
server_name www.siteB.com siteB.com; # 站点域名
root /home/user/www/forum; # 站点根目录
...
}
  • 打开nginx.conf文件
sudo vi /etc/nginx/nginx.conf
  • 将虚拟目录的配置文件加入到”http {}”部分的末尾
http {
...
include /etc/nginx/vhost/*.conf;
}
  • 重启Nginx服务
$ sudo service nginx restart
  • 现在访问www.siteA.com和www.siteB.com,你将发现浏览器会打开不同的站点

禁止访问小技巧

假如你的Nginx根目录设在”/home/user/www”,你想阻止别人通过”http://IP地址/blog”或”http://IP地址/forum”来访问你的站点,最简单的方法就是禁止IP地址访问。方法如下:

  1. 打开Nginx网站默认配置文件,记得先备份
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default_bak
$ sudo vi /etc/nginx/sites-available/default
  1. 将所有内容删除,只留以下配置
server {
listen 80 default_server;
server_name _;
return 404;
}
  1. 重启Nginx后,别人将无法通过IP地址访问网站了

如果你不想禁止IP地址访问整个目录,只是要防止别人通过IP访问你的博客和论坛。那就需要禁止”/blog”和”/forum”的目录访问。

  1. 打开Nginx网站默认配置文件,同上面一样,记得先备份
  1. 在”server { }”部分加上以下配置
location ^~ /blog/ {
deny all;
}
location ^~ /forum/ {
deny all;
}
  1. 重启Nginx即可

一个nginx服务器配置多站点的更多相关文章

  1. nginx代理https站点(亲测)

    nginx代理https站点(亲测) 首先,我相信大家已经搞定了nginx正常代理http站点的方法,下面重点介绍代理https站点的配置方法,以及注意事项,因为目前大部分站点有转换https的需要所 ...

  2. Nginx支持多站点配置小结

    如何配置 web 服务器才能在一个 VPS 上放置多个网站/博客呢?如何通过一个 IP 访问多个站点/域名呢?这是大多数 web 服务器支持的 virtual hosting 功能.即一个IP对应多个 ...

  3. 一个简单的php站点配置

    一个简单的php站点配置   现在我们来看在一个典型的,简单的PHP站点中,nginx怎样为一个请求选择location来处理:   server {     listen      80;     ...

  4. django创建一个简单的web站点

    一.新建project 使用Pycharm,File->New Project…,选择Django,给project命名 (project不能用test命名)   新建的project目录如下: ...

  5. Nginx 的多站点配置

    当我们有了一个 VPS 主机以后,为了不浪费 VPS 的强大资源(相比共享主机1000多个站点挤在一台机器上),往往有想让 VPS 做点什么的想法,银子不能白花啊:).放置多个网站或者博客是个不错的想 ...

  6. 如何制作一个Nginx镜像

    1,从这里你将学到编写Dockerfile的4个重要指令RUN,EXPOSE,ADD,ENTRYPOINT2,在Dockerfile中编写拷贝文件至容器的方法3, 安装一个nginx server,并 ...

  7. 使用Nginx对.NetCore站点进行反向代理

    前言 之前的博客我已经在Linux上部署好了.NetCore站点且通过Supervisor对站点进行了进程守护,同时也安装好了Nginx.Nginx的用处非常大,还是简单说下,它最大的功能就是方便我们 ...

  8. asp.net中 使用Nginx 配置 IIS站点负载均衡

    这是一偏初学者入门的内容,发现有问题的地方,欢迎留言,一起学习,一起进步 本文主要记录一下在Windows平台中,IIS站点如何使用Nginx 做一个简单的负载均衡  一. 准备工作: 官网下载安装包 ...

  9. nginx服务器配置

    nginx主要配置 #定义Nginx运行的用户和用户组user www www; #每个worker进程绑定到指定CPU ,均衡各CPU 负载worker_cpu_affinity 000000000 ...

随机推荐

  1. ShareSVN授权的代码示例

    var targetUrl = "your svn url path"; var path = "Temp"; System.Collections.Objec ...

  2. Django MTV 开发模式 + 数据库配置

    MTV 开发模式 Django 的设计鼓励松耦合及对应用程序中不同部分的严格分割.遵循这个理念的话,要想修改应用的某部分而不影响其它部分就比较容易了.在视图函数中,我们已经讨论了通过模板系统把业务逻辑 ...

  3. Python自学:第三章 索引从0开始而不是从1

    #返回最后一个,和倒数第二个元素 bicycles = ['trek','cannondale','redline','specialized'] print(bicycles[-1]) print( ...

  4. SQL查询日期格式化

    MARK一下 方便以后自己查阅 举例如下: getdate() 可以替换成日期类型字段 select Convert(varchar(10),getdate(),120) 2006-05-12sele ...

  5. Yii框架实现restful 接口调用,增删改查

    创建模块modules; 在main.php中配置文件:(1) (2)控制器层: namespace frontend\modules\v1\controllers;use frontend\modu ...

  6. sass compass config.rb

    require 'compass/import-once/activate' # Require any additional compass plugins here. # Set this to ...

  7. Win10系列:C#应用控件基础12

    TextBlock控件 TextBlock控件是应用程序开发过程中经常使用的控件之一,它的主要功能是显示一段只读的文本内容.开发者可以使用TextBlock控件来显示提示信息,还可以根据需求将显示的提 ...

  8. angularjs checkbox

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. day72 关于rbac组件的小部分面试题

    rbac的权限组件   基于角色的权限控制 1.什么是权限? url代表的就是一个权限 2.如何实现权限的控制? 表结构  以我们讲的课的内容为例 菜单表: - title 标题 - icon 图标 ...

  10. vue-router进阶-2-路由原信息

    //meta字段,一个路由匹配到的所有路由记录会暴露为 $route 对象(还有在导航守卫中的路有对象)的 $route.matched 数组. const router = new VueRoute ...