Cento7+Nginx反向代理实现多域名跳转
近期比较忙,所以很少写文档了,最近有个项目组有多个环境需要做映射,所以就想到了通过Nginx反向代理实现多域名地址跳转,以致就总结了一下,其实说到代理我们大家都知道。最常见最常说的所谓的就是NAT,就是将内部多个地址请求通过代理转达到外部。这个就叫正向代理,那什么是反向代理呢-就是和正向代理相反;所以很好理解,Nginx反向代理功能很强大,可以通过一个nginx代理实现多个域名及不同的端口进行代理转发,所以在日常的运维中很有帮助。我们今天的演示是通过Nginx反向代理实现内部不同的多个域名转发。具体见下:
环境:
Hostname:A-S.IXMSOFT.COM
IP:192.168.5.21
Role:Nginx service
Hostname:B-S.IXMSOFT.COM
IP:192.168.5.22
Role:Nginx service
Hostname:D-S.IXMSOFT.COM
IP:192.168.5.20
Role:Nginx反向代理
需求:通过配置Nginx反向代理访问不同的域名实现跳转。
我们内部两台提供测试的Nginx提供的web服务已经安装完成。
我们需要在默认的nginx默认的显示页面上进行编辑显示内容:
1
|
vim /usr/share/nginx/html/index .html
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<!DOCTYPE html> <html> < head >
<title>Welcome to nginx!< /title >
<style> body {
width: 35em;
margin: 0 auto;
font-family: Tahoma,
Verdana, Arial, sans-serif; }
< /style >
< /head >
<body> <h1>Welcome to A-S Nginx< /h1 >
<p>HostName:A-S< /p >
<p>IP:192.168.5.21< /p >
< /body >
< /html >
|
192.168.5.21
192.168.5.22
接下来我们就开始安装及配置Nginx反向代理了;
我们先安装nginx,因为是Centos7,所以我们需要安装nginx仓库。
1
2
|
Yum install http: //nginx .org /packages/centos/7/noarch/RPMS/nginx-release-centos-7-0 .el7.ngx.noarch.rpm
yum install nginx
|
我们最好能备份一下nginx.conf文件
1
|
cp /etc/nginx/nginx .conf /etc/nginx/nginx .conf.bak
|
然后我们打开默认的nginx.conf文件
1
|
vim /etc/nginx/nginx .conf
|
就可以看见默认的Nginx.conf的内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
user nginx; worker_processes 1; error_log /var/log/nginx/error .log warn;
pid /var/run/nginx .pid;
events { worker_connections 1024; } http { include /etc/nginx/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"' ;
access_log /var/log/nginx/access .log main;
sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf .d/*.conf;
|
我们看见nginx默认配置下包括了一个包含多个配置文件的选项,所以我们一般可以不修改这个默认的配置文件;
而且默认的配置文件中,已经包含了nginx配置文件的加载目录,意思是,只要是在/etc/nginx/conf.d/下的所有的.conf文件都会被加载。
另外我们需要注意的是这个配置文件的内容在http区域中。
我们查看默认的配置文件
我们查看默认的default.conf文件内容
1
|
vim default.conf |
我们看见这个配置文件已经占用了80端口,我们将80端口修改,不然会有冲突,再次更改为88。
接下来我们新建一个配置文件,来配置反向代理内容,当然我们也可以直接在默认的配置文件中进行修改,但是我们一般的做法是不在默认的配置上修改。
1
|
vim realy-proxy.conf |
然后添加server地址信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x .html;
location = /50x .html {
root html; } } server { listen 80; server_name d1.ixmsoft.com; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http: //192 .168.5.21:80;
} } server { listen 80; server_name d2.ixmsoft.com; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http: //192 .168.5.22:80;
} } |
--------------------------------------------------------------------------------
我们最后添加一个log文件,记录访问的log
我们需要在/etc/nginx 目录下创建一个log目录
1
2
|
cd /etc/nginx
mkdir logs
|
这个文件夹得有你启动nginx用户的写权限
然后在新建的配置文件里面添加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x .html;
location = /50x .html {
root html; } } server { listen 80; server_name d1.ixmsoft.com; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http: //192 .168.5.21:80;
} access_log logs /d1 .ixmsoft.com_access.log;
} server { listen 80; server_name d2.ixmsoft.com; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http: //192 .168.5.22:80;
} access_log logs /d2 .ixmsoft.com_access.log;
} |
然后重启nginx服务就可以了
1
|
systemctl restatrt nginx |
接下来我们测试访问
访问前,我们需要将server_name的两个域名在DNS中指向Nginx IP,这样使用域名才可以访问
1
|
我们访问d1.ixmsoft.com |
1
|
d2.ixmsoft.com |
最后我们在log目录查看log
1
|
cd /etc/nginx/logs
|
我们分别查看两个log文件内容
cat d1.ixmsoft.com_access.log
cat d2.ixmsoft.com_access.log
我们可以看见是哪个机器访问的IP地址都会被显示
本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1881318,如需转载请自行联系原作者