TCP端口法
由于各种原因,我们有时候需要在一个IP地址上建立多个web站点,在IIS5中,我们可能通过简单的设
置达到这个目标。
在IIS中,每个 Web 站点都具有唯一的、由三个部分组成的标识,用来接收和响应请求:
(1) IP地址
(2) 端口号
(3) 主机头名
在IIS中,在一个IP地址上建立多个独立的web站点,通常有两种方法,本文以以例子的形式介绍TCP端
口法。
环境:假设深圳市某某公司的内部网由一台win2000服务器和几十台工作站组成,这个内部网的网段
是192.168.1.0/24,服务器的地址是192.168.1.10,名称是myserver。在这台服务器已经安装了Internet
服务,即IIS 5。沧海公司有A,B,C三个部门,分别在8086,8087,8088三个房间办公。现在公司要求网络
管理员在服务器上使用一个IP为公司和三个部分别建立一个网站,即要建立四个网站。
通过使用附加端口号,站点只需一个 IP 地址即可维护多个站点。客户要访问站点时,需在静态IP地
址后面附加端口号(默认 Web 站点除外,它使用端口 80)。
具体操作如下:
1、在win2000服务器上为公司和三个部门在硬盘上建立文件夹,做为WEB站点主目录。如下:
WEB站点主目录WEB站点
d:\web\com 公司网站
d :\web\a A部门网站
d:\web\b B部门网站
d:\web\c C部门网站
2、使用WEB站点管理向导,分别为公司和三个部门建立四个WEB站点,四者最大的不同是使用了不同的
TCP端口:
公司站点 A部门站点 B部门站点 C部门站点
IP地址 192.168.1.10
TCP端口 80 8086 8087 8088
权限 读取和运行脚本
站点主目录 d:\web\com d:\web\a d:\web\b d:\web\c
这样,客户端就可以通过:
http://192.168.1.10 访问公司站点。
http://192.168.1.10:8086 访问A部门站点
http://192.168.1.10:8087 访问B部门站点
http://192.168.1.10:8088 访问C部门站点
这种方法建立的WEB站点使用非默认端口的网站具有相对的隐蔽性,但此方法维护多个站点要求客户
在端口号前键入实际的数字 IP 地址。不能使用主机名和“友好名称”。
方法二、主机头名法
由于各种原因,我们有时候需要在一个IP地址上建立多个web站点,在IIS5中,我们可能通过简单的
设置达到这个目标。
在IIS中,每个 Web 站点都具有唯一的、由三个部分组成的标识,用来接收和响应请求:
(1) IP地址
(2)端口号
(3)主机头名。
在IIS中,在一个IP地址上建立多个独立的web站点,通常有两种方法,本文以以例子的形式介绍主
机头法,使用这种方法可以建立起专业的虚拟主机。
环境:假设深圳市某某公司用一台win2000服务器提供虚拟主机服务,地址是192.168.1.10。在这台
服务器已经安装了Internet服务即IIS 5。
现在公司要求网络管理员在服务器上使用一个IP为ABCD四个公司建立独立的网站,每个网站拥有自己独
立的域名。四家网站域名分别为: www.a.com , www.b.com , www.c.com 和 www.d.com 。
通过使用主机头,站点只需一个 IP 地址即可维护多个站点。客户可以使用不同的域名访问各自的站点,
根本感觉不到这些站点在同一主机上。
具体操作如下:
1、在win2000服务器为四家公司建立文件夹,做为WEB站点主目录。如下: WEB站点主目录 WEB站点
d:\web\a A公司网站
d:\web\b B公司网站
d:\web\c C公司网站
d:\web\d D公司网站
2、使用WEB站点管理向导,分别四家公司建立独立的WEB站点,四者最大的不同是使用了不同的主机头名:
A公司站点 B公司站点 C公司站点 D公司站点
IP地址 192.168.1.10
TCP端口 80
权限 读取和运行脚本
主机头名 www.a.com www.b.com www.c.com www.d.com
站点主目录 d:\web\a d:\web\b d:\web\c d:\web\d
在DNS中将这四个域名注册上,均指向同一地址:192.168.1.10。这样,客户端就可以通过:
http://www.a.com 访问A公司站点。
http://www.b.com 访问B公司站点。
http://www.c.com 访问C公司站点。
http://www.d.com 访问D公司站点。
3、每个站点的主机头名可以在WEB站点建立向导中设置,它与站点的IP地址,TCP端口在同一屏上。也可能 (DNS)
通过该站点->"属性"->"WEB站点"标签->选IP地址右边的"高级"按钮,跳出"高级多WEB站点配置"进行配置。
这种方法建立可以建立专业的虚拟主机,几乎所有使用IIS提供虚拟主机的公司都这样做的。
最近数次遇到这种情况:硬件资源有限,但有些开发配置要求比较严苛(如在微信公众号进行接口配置或安全域名配置),要求80端口甚至顶级域名。但服务器的80端口早就被之前的已经上线的应用占掉了。
因此做了一些尝试,最终解决了访问问题。
域名都解析到该服务器的IP下,通过Nginx区分主机头,从而决定请求访问到哪个应用。
相当于门卫将不同的来者领到不同的房间。
最终通过对Nginx的配置实现了需求。
目前用着没啥问题,但 优劣还待考证。
指向第二个应用的本机地址。
附上原有的第一个应用的upstream。
注意本例中,要新添加的解析二级域mysite.mydomain.com
再给conf添加如下1个server:
添加后,有2个server,一个用来匹配 www.me.com ,一个用来匹配 mysite.mydomain.com 。
附上原有的另一个server:
upstream和server都在conf中加好后,使用如下命令测试一下配置文件是否可用。以我自己的为例:
通过后,再重启nginx。
先检查一下原有的域名访问是否一如既往。
注意测试前可清除一下DNS缓存。
如果是Mac系统,使用如下命令:
在域名商(域名在哪家买的就去哪家)处,增加新域名(二级域名)的A记录解析到该IP。
一般的服务器,解析后即可生效,不需要在空间商处做额外的动作。
但如果域名商为西部数据且空间是国内要备案的那种空间,则需要:
清除一下DNS缓存。
如果是Mac系统,使用如下命令:
然后使用nslookup看一下你的两个域名是否已经指向了你这台服务器的IP。
之后就通过不同域名访问,看看是否导向了不同的应用即可。
~ END ~
受益于如下这些文章:
这里以配置2个站点(2个域名)为例,n 个站点可以相应增加调整,假设:IP地址: *.*.*.*
域名1 example1.com 放在 /www/example1
域名2 example2.com 放在 /www/example2
配置 nginx virtual hosting 的基本思路和步骤如下:
把2个站点 example1.com, example2.com 放到 nginx 可以访问的目录 /www/
给每个站点分别创建一个 nginx 配置文件 example1.com.conf,example2.com.conf, 并把配置文件放到 /etc/nginx/vhosts/
然后在 /etc/nginx.conf 里面加一句 include 把步骤2创建的配置文件全部包含进来(用 * 号)
重启 nginx
具体过程
下面是具体的配置过程:
1、在 /etc/nginx 下创建 vhosts 目录
mkdir /etc/nginx/vhosts
2、在 /etc/nginx/vhosts/ 里创建一个名字为 example1.com.conf 的文件,把以下内容拷进去
server {
listen 80
server_name example1.com www. example1.com
access_log /www/access_ example1.log main
location / {
root /www/example1.com
index index.php index.html index.htm
}
error_page 500 502 503 504 /50x.html
location = /50x.html {
root /usr/share/nginx/html
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000
fastcgi_index index.php
fastcgi_param SCRIPT_FILENAME /www/example1.com/$fastcgi_script_name
includefastcgi_params
}
location ~ /\.ht {
deny all
}
}
3、在 /etc/nginx/vhosts/ 里创建一个名字为 example2.com.conf 的文件,把以下内容拷进去
server {
listen 80
server_name example2.com www. example2.com
access_log /www/access_ example1.log main
location / {
root /www/example2.com
index index.php index.html index.htm
}
error_page 500 502 503 504 /50x.html
location = /50x.html {
root /usr/share/nginx/html
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000
fastcgi_index index.php
fastcgi_param SCRIPT_FILENAME /www/example2.com/$fastcgi_script_name
includefastcgi_params
}
location ~ /\.ht {
deny all
}
}
4、打开 /etc/nginix.conf 文件,在相应位置加入 include 把以上2个文件包含进来
user nginx
worker_processes 1
# main server error log
error_log /var/log/nginx/error.log
pid /var/run/nginx.pid
events {
worker_connections 1024
}
# main server config
http {
include mime.types
default_type application/octet-stream
log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
sendfileon
#tcp_nopush on
#keepalive_timeout 0
keepalive_timeout 65
gzip on
server {
listen 80
server_name _
access_log /var/log/nginx/access.log main
server_name_in_redirect off
location / {
root /usr/share/nginx/html
index index.html
}
}
# 包含所有的虚拟主机的配置文件
include /usr/local/etc/nginx/vhosts/*
}
5、重启 Nginx
/etc/init.d/nginx restart
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)