Cento7+Nginx反向代理实现多域名跳转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cento7+Nginx反向代理实现多域名跳转相关的知识,希望对你有一定的参考价值。

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默认的显示页面上进行编辑显示内容:

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地址信息

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目录

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

接下来我们测试访问

我们访问d1.ixmsoft.com

技术分享

d2.ixmsoft.com

技术分享

最后我们在log目录查看log

cd /etc/nginx/logs

技术分享

我们分别查看两个log文件内容

cat d1.ixmsoft.com_access.log

cat d2.ixmsoft.com_access.log

我们可以看见是哪个机器访问的IP地址都会被显示

技术分享

本文出自 “高文龙” 博客,谢绝转载!

以上是关于Cento7+Nginx反向代理实现多域名跳转的主要内容,如果未能解决你的问题,请参考以下文章

nginx反向代理PC端和手机端分别请求各自后台工程

nginx反向代理PC端和手机端分别请求各自后台工程

nginx 反向代理支持域名吗

Nginx反向代理多域名的HTTP和HTTPS服务

Nginx 实现 Rewrite 跳转

nginx 80端口反向代理多个域名,怎样隐藏端口的