扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
下文给大家带来nginx反向代理概述及部署,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用创新互联在行业内累计的经验来做一个解答。
成都创新互联公司是一家专业提供达孜企业网站建设,专注与网站设计制作、成都网站建设、HTML5、小程序制作等业务。10年已为达孜众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。反向代理(Reverse Proxy)方式是指以代理云服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
环境准备:
主机名 | IP地址 | 角色 | 系统 |
---|---|---|---|
web-node1.com | eth0:192.168.90.201 | web-node1节点 | CentOS7.2 |
web-node2.com | eth0:192.168.90.202 | web-node2节点 | CentOS7.2 |
lb-node1.com | eth0:192.168.90.203 | Nginx反向代理 | CentOS7.2 |
在两台web-node节点中均使用Yum安装一个Apache用于做真实机,监听8080端口
web-node1.com部署
[root@web-node1 ~]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm [root@web-node1 ~]# yum install -y gcc glibc gcc-c++ make screen tree lrzsz ##部署web-node1 httpd服务 [root@web-node1 ~]# yum install -y httpd [root@web-node1 ~]# sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf [root@web-node1 ~]# systemctl start httpd [root@web-node1 ~]# echo "web-node1.com" > /var/www/html/index.html [root@web-node1 ~]# curl http://192.168.90.201:8080/ web-node1.com
web-node2.com部署
[root@web-node1 ~]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm [root@web-node1 ~]# yum install -y gcc glibc gcc-c++ make screen tree lrzsz ##部署web-node2 httpd服务 [root@web-node1 ~]# yum install -y httpd [root@web-node1 ~]# sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf [root@web-node1 ~]# systemctl start httpd [root@web-node1 ~]# echo "web-node2.com" > /var/www/html/index.html [root@web-node1 ~]# curl http://192.168.90.202:8080/ web-node2.com
Nginx 源码编译安装,使其支持4层,并监听80端口
[root@lb-node1~]# useradd-s/sbin/nologin-M www
[root@lb-node1~]# cd/usr/local/src/
[root@lb-node1 src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz
[root@lb-node1 src]# tar xf nginx-1.10.2.tar.gz
[root@lb-node1 src]# cd nginx-1.10.2
[root@lb-node1 nginx-1.10.2]#./configure--prefix=/usr/local/nginx-1.10.2 \
--user=www--group=www--with-http_ssl_module \
--with-http_stub_status_module--with-file-aio--with-stream
[root@lb-node1 nginx-1.10.2]# make&& make install
[root@web-node1~]# ln-s/usr/local/nginx-1.10.2/ /usr/local/nginx
## 测试配置并启动Nginx
[root@lb-node1~]#/usr/local/nginx/sbin/nginx-t
nginx: the configuration file/usr/local/nginx-1.10.2/conf/nginx.conf syntaxis ok
nginx: configuration file/usr/local/nginx-1.10.2/conf/nginx.conf testis successful
[root@lb-node1~]#/usr/local/nginx/sbin/nginx
##http段配置
upstream web-cluster{
# ip_hash;
server192.168.90.201:8080 weight=1 max_fails=3 fail_timeout=3;
server192.168.90.202:8080 weight=1 max_fails=3 fail_timeout=3;
}
server{
listen80;
server_name192.168.90.203;
location/{
proxy_pass http://web-cluster;
include proxy.conf;
}
}
测试代理
[root@lb-node1~]# curl http://192.168.90.203/
web-node1.com
[root@lb-node1~]# curl http://192.168.90.203/
web-node2.com
[root@lb-node1~]# curl http://192.168.90.203/
web-node1.com
[root@lb-node1~]# curl http://192.168.90.203/
web-node2.com
2.通过分组方式,以及User-agent实现不同代理
#http段配置
upstreamstatic-cluster{
server192.168.90.201:8080 weight=1 max_fails=3 fail_timeout=3;
}
upstreamdynamic-cluster{
server192.168.90.202:8080 weight=1 max_fails=3 fail_timeout=3;
}
upstreamdefault-cluster{
server192.168.90.202:8080 weight=1 max_fails=3 fail_timeout=3;
}
#需要配置本地host解析测试 server { listen 80; server_name nginx.jiege.com; location / { if ($http_user_agent ~* "Firefox"){ proxy_pass http://static-cluster; } if ($http_user_agent ~* "Chrome") { proxy_pass http://dynamic-cluster; } proxy_pass http://default-cluster; } }
测试分组
##默认浏览器交给default处理[root@lb-node1 ~]# curl http://nginx.jiege.com web-node2.com 火狐浏览器交给static-cluster处理 谷歌浏览器交给dynamic-cluster处理 配置ssh以及msql反向代理
stream { upstream ssh_proxy { hash $remote_addr consistent; server 192.168.90.201:22; } upstream mysql_proxy { hash $remote_addr consistent; server 192.168.90.202:3306; } server { listen 2222; proxy_connect_timeout 1s; proxy_timeout 300s; proxy_pass ssh_proxy; } server { listen 3333; proxy_connect_timeout 1s; proxy_timeout 300s; proxy_pass mysql_proxy; } }
2222端口代理至于node1的SSH、3333端口代理至于node2的MYSQL
## 测试连接ssh
[root@lb-node1~]# ssh-p2222 root@192.168.90.203
root@192.168.90.203's password:
Last login: Wed Oct 19 11:53:04 2016 from 192.168.80.143
[root@web-node1 ~]#
## 测试连接mysql
[root@lb-node1 ~]# mysql -h392.168.90.203 -uroot -p1 -P3333
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 273
Server version: 5.5.47-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
看了以上关于nginx反向代理概述及部署,如果大家还有什么地方需要了解的可以在创新互联行业资讯里查找自己感兴趣的或者找我们的专业技术工程师解答的,创新互联技术工程师在行业内拥有十几年的经验了。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流