需求如下
主站:www.abc.cn
二级站1:one.abc.cn(服务位于云服务器http://ip:8001)
二级站2:two.abc.cn(服务位于云服务器http://ip:8002)
目前域名解析时,one和two都定向了同一个云服务器ip的80端口,现在要访问one.abc.cn时调8001端口,访问two.abc.cn时调8002端口。
方案:开两份nginx(虽然这样不太主流),其中红色是主站www.abc.cn,蓝色是二级站one.abc.cn
红色主站的配置文件如下(主站资源放在红色html中):
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name *.abc.cn;
if ($http_host ~* "^(.*?)\.abc\.cn$") { #正则表达式
set $domain $1; #设置变量
}
location / {
if ($domain ~* "one") {
proxy_pass http://abc.cn:8001; #域名中有one,转发到8001端口
}
if ($domain ~* "two") {
proxy_pass http://abc.cn:8002; #域名中有two,转发到8002端口
}
tcp_nodelay on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上
#默认情况80时进入主站nginx的html文件(放着主站的资源)
# root C:/vae;
root html;
index index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
add_header 'Access-Control-Allow-Origin' '*';
}
}
蓝色one站配置如下(one站资源放在one的nginx的html文件夹里,这里只改了个端口号8001,默认是80):
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65
server {
listen 8001;
server_name one.abc.cn;
location / {
root html;
index regtime.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
完成后,分别进入两个nginx启动服务。
如果启动了没正常执行,在任务管理器中停掉多余的nginx.exe
如果还不行,就在防火墙运行通过的名单中加上这些.exe。
1、启动:
C:\server\nginx-1.0.2>start nginx
或
C:\server\nginx-1.0.2>nginx.exe
注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。
2、停止:
C:\server\nginx-1.0.2>nginx.exe -s stop
或
C:\server\nginx-1.0.2>nginx.exe -s quit
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
3、重新载入Nginx:
C:\server\nginx-1.0.2>nginx.exe -s reload
当配置信息修改,需要重新载入这些配置时使用此命令。
4、重新打开日志文件:
C:\server\nginx-1.0.2>nginx.exe -s reopen
5、查看Nginx版本:
C:\server\nginx-1.0.2>nginx -v