Cent7+nginx反向代理实现多域名跳转
最近比较忙,所以很少写文档。最近一个项目组有多个环境要映射,就想到了通过Nginx反向代理实现多域地址跳转,于是总结了一下。其实说到代理我们都知道。最常见的是NAT,通过代理将多个内部地址请求传递到外部。这叫正向代理,那么什么是反向代理——也就是正向代理的反义词;所以很容易理解nginx反向代理非常强大,一个Nginx代理可以转发多个域名和不同端口,所以在日常运维中很有帮助。今天演示的是通过Nginx反向代理实现多个域名的内部转发。查看以下详细信息:
环境:
主机名:A-S.IXMSOFT.COM
IP:192.168.5.21
角色:Nginx服务
主机名:B-S.IXMSOFT.COM
IP:192.168.5.22
角色:Nginx服务
主机名:D-S.IXMSOFT.COM
IP:192.168.5.20
角色:Nginx反向代理
要求:配置Nginx反向代理访问不同域名实现跳转。
由我们的两个提供测试的内部Nginx提供的web服务已经安装。
我们需要编辑nginx默认显示页面上的显示内容:
vim /usr/share/nginx/html/index.html <!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仓库。
Yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum install nginx我们最好备份nginx.conf文件
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak然后我们打开默认的nginx.conf文件。
vim /etc/nginx/nginx.conf您可以看到默认Nginx.conf的内容
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文件的内容。
vim default.conf我们看到这个配置文件占用了端口80。我们会修改端口80,否则会有冲突,重新改成88。
接下来,我们将创建一个新的配置文件来配置反向代理内容。当然我们也可以直接在默认配置文件中修改,但是我们一般的做法是不在默认配置中修改。
vim realy-proxy.conf然后添加服务器地址信息。
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; } }-
最后,我们添加一个日志文件来记录被访问的日志。
我们需要在/etc/nginx目录下创建一个日志目录。
cd /etc/nginx mkdir logs这个文件夹必须有写权限,你才能启动nginx用户。
然后将其添加到新的配置文件中。
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服务。
systemctl restatrt nginx接下来,我们将测试面试。
在访问之前,我们需要将server_name的两个域名指向DNS中的NginxIP,这样就可以访问域名了。
我们访问d1.ixmsoft.com d2.ixmsoft.com最后,我们检查日志目录中的日志。
cd /etc/nginx/logs让我们分别看看两个日志文件的内容。
catd1.ixmsoft.com_access.log
catd2.ixmsoft.com_access.log
我们可以看到哪个机器访问的IP地址会显示出来。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)