linux下nginx实现虚拟主机(3种方法:基于域名、基于端口、基于ip地址)

在3.17日的时候已经写过一篇关于apahce的基于域名、端口、ip地址3种方式的虚拟主机实现。原理是一样的,现在记录nginx的虚拟主机这三种方式的实现。

系统版本为rhel5.6,nginx版本为1.1.6。

1.基于域名:

基于域名的方式,要先有dns服务器,这里为了方便,可以在/etc/hosts文件里面配置,把它当成dns就行了,可以参考3.17日那篇博客关于dns的配置或者其他博文也有。这里关于nginx的安装也略去。

[[email protected] ~]# cat /etc/hosts   ///在hosts文件中添加www.xiaowei_1.com、www.xiaowei_2.com两条域名

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1localhost.localdomain localhost

::1localhost6.localdomain6 localhost6

10.10.16.29www.xiaowei_1.com

10.10.16.29www.xiaowei_2.com

[[email protected] conf]# cp nginx.conf nginx.conf_bak  ///备份nginx配置文件

[[email protected] conf]# cat nginx.conf

user  nobody;

worker_processes  1;   ///worker进程轻易不要调,否则会出问题,worker进程数不要大于cpu核数,这里的worker进程数调成了多少,对应的nginx就会生成多少worker进程。

error_log  logs/error.log;

pid        logs/nginx.pid;

events {

worker_connections  1024;    ///每个进程最大的连接数,可以适当调高一点,最大值是65535,nginx最终的并发连接数是这里的每个进程连接数乘以上面的worker进程数目

use epoll;   ///使用epoll模式,nginx的强大最主要得益于用了epoll模式,当然nginx之所以牛逼最主要得益于它被用做了反向代理,(用做web服务器也很牛)。

}

http {   ///将虚拟主机放到http节点里面,可以把配置文件全部放到http节点里面,也可以把虚拟主机的配置文件独立成一个配置文件,在http节点引用它,这里我选择了后者。

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

include extra/virtualhost.conf;  ///我把虚拟主机的配置文件独立成virtualhost.conf,这个文件在extra目录里面,即这个文件放的位置是/usr/local/nginx/conf/extra/virtualhost.conf。

}

说明:实际生产中在nginx.conf的主配置文件中还可以添加其他配置信息,如添加gzip压缩配置、日志格式等等配置信息(优化配置),这里我的上面配置信息已经够用的了,有机会再贴出来并解释比较全的nginx配置文件。

现在要在/usr/local/nginx/conf目录下面创建extra目录,并在extra目录里面创建virtualhost.conf文件。

[[email protected] conf]# mkdir extra

[[email protected] extra]# cat virtualhost.conf  ///这里我做了两个虚拟主机,分别是刚刚在hosts文件中配置的www.xiaowei_1.com域名和www.xiaowei_2.com域名。

server {

listen 80;  ///监听主机中所有的80端口

server_name www.xiaowei_1.com;    ///定义客户端要访问网站用到的域名

location / {

root html/xiaowei_1;    ///定义网站www.xiaowei_1.com所在的位置,即在/usr/local/nginx/html/xiaowei_1目录里面。

index index.html index.php;    ///定义索引文件,可以多加几个

}

}

server {

listen 80;

server_name www.xiaowei_2.com;

location / {

root html/xiaowei_2;

index index.html index.php;

}

}

[[email protected] html]# mkdir xiaowei_1 xiaowei_2

[[email protected] xiaowei_1]# cat index.html ///配置网站www.xiaowei_1.com的主页

11111

[[email protected] xiaowei_2]# cat index.html

222222

[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload   ///重启nginx服务,使上面的配置生效

由于这里我没有配置dns服务器,只是简单的在hosts文件里添加了两个域名信息,所以只能在本机上用域名的方式访问两个域名了,如下

[[email protected] ~]# curl http://www.xiaowei_1.com

11111

[[email protected] ~]# curl http://www.xiaowei_2.com

222222

结果表明,基于域名的虚拟主机配置成功,默认情况下本机的默认网站是virtualhost.conf文件中第一个server节点中对应的网站,如下结果:

[[email protected] ~]# curl http://localhost

11111

好的,到这里基于域名的虚拟主机配置方式配置成功!

2.基于端口:

基于端口也是很简单的,这里我直接上面“基于域名”的基础上在virtualhost.conf配置文件增加了两段基于端口的配置信息,也可以把上面的基于域名的配置信息全部删除,做一个纯基于端口的配置文件

[[email protected] extra]# cat virtualhost.conf

server {

listen 80;

server_name www.xiaowei_1.com;

location / {

root html/xiaowei_1;

index index.html index.php;

}

}

server {

listen 80;

server_name www.xiaowei_2.com;

location / {

root html/xiaowei_2;

index index.html index.php;

}

}

server {    ///从这里开始增加下面的两个server字段

listen 8080;

location / {

root html/xiaowei_3;    ///本机的ip是10.10.16.29,本机8080端口网站目录是xiaowei_3,下面会创建这个目录。

index index.html index.php;

}

}

server {

listen 8081;

location / {

root html/xiaowei_4;

index index.html index.php;

}

}

[[email protected] html]# mkdir xiaowei_3 xiaowei_4

[[email protected] xiaowei_3]# cat index.html

33333

[[email protected] xiaowei_4]# cat index.html

444444

[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload

现在可以在本机或者其他机器的浏览器上输入http://10.10.16.29:8080或者http://10.10.16.29:8081会看到不同的内容:(如果局域网内有dns服务器,在dns服务器上添加域名www.xiaowei.com对应ip地址10.10.16.29,则在浏览器上输入http://www.xiaowei.com:8080或者http://www.xiaowei.com:8081会有同样的效果)

[[email protected] xiaowei_4]# curl http://10.10.16.29:8080

33333

[[email protected] xiaowei_4]# curl http://10.10.16.29:8081

444444

结果表明通过端口访问也是成功的!

还可以将基于端口的配置信息独立出来成virtualport.conf,同样放在extra目录下,然后在nginx.conf配置文件中添加include extra/virtualport.conf,效果同样是可以通过端口访问的。

到这里,基于端口的虚拟主机配置成功了!

3.基于ip:

基于ip的方式就更简单了,只要将基于域名方式中的域名换成ip地址就可以了。

linux下nginx实现虚拟主机(3种方法:基于域名、基于端口、基于ip地址),布布扣,bubuko.com

时间: 2024-08-12 03:32:14

linux下nginx实现虚拟主机(3种方法:基于域名、基于端口、基于ip地址)的相关文章

CentOS7构建虚拟Web主机(基于域名、端口、IP地址)

虚拟Web主机 在同一台物理服务器中运行多个Web站点,其中每一一个站点并不独立占用一台真正的计算机. httpd支持的虚拟主机类型 基于域名的虚拟主机 基于IP地址的虚拟主机 基于端口的虚拟主机 构建虚拟主机------基于域名 (1)安装bind.httpd服务. (2)进入named服务的主配置文件,将下图两个位置改为"any". [[email protected] ~]# vim /etc/named.conf (3)进入named服务的区域配置文件,添加两个域名的区域信息.

Linux下nginx配置虚拟主机

在弄到新服务器,安装了所有东西后,开始配置新的站点测试了,可是问题却随之而来呀,主要是站点设置成功,但是并不支持php.nginx配置站点其实就是基于一ip多站点.那么在配置目录中新建一个配置文件,名字起得和站点名字相同,然后写入: server { listen 80; server_name www.piyaoyan.com piyaoyan.com; access_log /var/log/nginx/piyaoyan.com/access.log main; root /home/akc

linux下apache https 虚拟主机配置

如果单纯只想在传输数据时加密传输,那么ssl证书是不需要认证的,但是浏览器打开时会有警告信息.假设我们做的不是一个公众产品那么也还好啦. 如下是今天学习时的一个笔记,其实我用的是真实环境. 环境:CentOS 64, 32bit:Apache 2.2.15: 1.检查apache是否安装了mod_ssl.so模块. 检查方法是查看是否在modules(/etc/httpd/modules/)下存在.不存在那么安装(yum -y install mod_ssl). 2.生成证书和密钥 1)生成密钥

nginx配置虚拟主机vhost的方法详解

摘自:http://www.jb51.net/article/107331.htm Nginx vhost配置,可实现基于ip.端口号.servername的虚拟主机,同时可避免直接修改主配置文件.在nginx下配置虚拟主机vhost非常方便.这篇文章主要介绍了nginx配置虚拟主机vhost的方法,需要的朋友可以参考下 前言 所谓虚拟主机,是说通过几个不同的url地址,都能到达nginx环境,只不过针对不同的url,处理的逻辑不同.nginx支持虚拟主机,但是浏览器等客户端不知道,所以虚拟主机

Linux下调节CPU使用的几种方法

一,使用taskset充分利用多核cpu,让cpu的使用率均衡到每个cpu上 #taskset-p,    设定一个已存在的pid,而不是重新开启一个新任务-c,    指定一个处理,可以指定多个,以逗号分隔,也可指定范围,如:2,4,5,6-8. 1,切换某个进程到指定的cpu上taskset -cp 3 13290 2,让某程序运行在指定的cpu上taskset -c 1,2,4-7 tar jcf test.tar.gz test 需要注意的是,taskset -cp 3 13290在设定

Linux下查看磁盘挂载的几种方法

Linux下查看磁盘挂载的几种方法 第一种方法:df命令 # df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev tmpfs tmpfs 3.9G 4.0K 3.9G 1% /dev/shm tmpfs tmpfs 3.9G 1.2M 3.9G 1% /run tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/sda1

【转】Linux下nginx配置https协议访问的方法

一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/nginx -V 如下所示: configure arguments: --prefix=/usr/local/nginx --with-google_perftools_module --without-http_memcached_module --user=www --group=www --

***阿里云linux 下怎么配置虚拟主机

最近有个问题,本人在阿里云买了linux服务器,用wordpress做了一个博客网站www.bravetiger.cn,现在想加一个电商系统进去,假设二级域名为:shop.bravetiger.cn, 都是指向的阿里云同一个IP,同一个主机. 我找了下方法,应该是做一个虚拟主机配置即可,方法如下: linux系统配置Apache虚拟主机实例: 1.安装apache和php: yum install httpd php 2.假设服务器的IP是192.168.1.1,有两个域名指向该IP,分别是do

搭建nginx虚拟主机——基于域名、端口和IP

Nginx支持的虚拟主机有三种 1.基于域名的虚拟主机2.基于IP的虚拟主机3.基于端口的虚拟主机且每一种虚拟主机均可通过"server{}" 配置段实现各自的功能 一.基于域名搭建 1.编译安装Nginx服务2.远程获取Windows上的源码包,并挂载到Linux上 [[email protected] ~]# smbclient -L //192.168.235.1 Enter SAMBA\root's password: Sharename Type Comment ------