Nginx反向代理实践
##前言 上一篇解釋了Nginx的反向代理模塊的用法,本篇主要以實(shí)踐為主。本次演示并為實(shí)現(xiàn)Nginx高可用。僅以演示Nginx反向代理為準(zhǔn)。
##實(shí)驗(yàn)環(huán)境: 三臺(tái)服務(wù)器一臺(tái)服務(wù)器作為前端反向代理,剩下兩臺(tái)服務(wù)器為tomcat服務(wù)器。
- 角色 服務(wù)器IP地址 域名 OS版本
- 前端Nginx反向代理 192.168.1.141 CentOS7.2
- 后端tomcat服務(wù)器 192.168.1.142 www.a.com CentOS7.2
- CentOS7.2 192.168.1.143 www.b.net CentOS7.2
##拓?fù)鋱D ##1、配置Nginx官方Y(jié)UM源
前端Nginx服務(wù)器配置,本次演示使用yum去安裝,如果需要源碼編譯安裝請(qǐng)參照之前發(fā)的Nginx安裝。
[root@Bj-1-141 ~]# cd /etc/yum.repos.d/ [root@Bj-1-141 yum.repos.d]# vim nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1##2、安裝nginx-1.8.1版本
前端nginx服務(wù)器安裝
[root@Bj-1-141 ~]# yum -y install nginx-1.8.1##3、配置nginx反向代理
###(1) 修改主配置文件
[root@Bj-1-141 ~]# cd /etc/nginx/ [root@Bj-1-141 nginx]# vim nginx.conf user nginx; worker_processes 4; worker_rlimit_nofile 65535; worker_cpu_affinity 0001 0010 0100 1000;error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;events {worker_connections 10240; }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_nodelay on;#tcp_nopush on;keepalive_timeout 30;gzip on;gzip_comp_level 6;gzip_http_version 1.0;gzip_disable msie6;gzip_min_length 1k;gzip_types text/plain text/css text/xml application/x-javascript application/xml application/json;# 定義a.com域名的緩存目錄,緩存zone為acacheproxy_cache_path /var/cache/nginx/a.com levels=2:1 keys_zone=acache:10m max_size=1g;# 定義b.net域名的緩存目錄,緩存zone為bcacheproxy_cache_path /var/cache/nginx/b.net levels=2:1 keys_zone=bcache:10m max_size=1g;include /etc/nginx/conf.d/*.conf; }###(2) 添加虛擬主機(jī)配置
[root@Bj-1-141 nginx]# cd conf.d/ [root@Bj-1-141 conf.d]# vim www.a.com.conf upstream www_a {server 192.168.1.142:8080 weight=1 max_fails=3; }server {listen 80;server_name www.a.com;index index.html index.htm index.jsp;access_log /data/logs/www.a.com/access.log main;location / {proxy_pass http://www_a;proxy_cache acache;proxy_cache_key $request_uri;proxy_cache_valid 200 301 302 1m;proxy_cache_valid 404 1m;proxy_set_header Host $host;proxy_set_header X-Forward-For $remote_addr;proxy_read_timeout 60s;add_header X-Cache $upstream_cache_status;} }[root@Bj-1-141 conf.d]# vim www.b.net.conf upstream www_b {server 192.168.1.143:8080 weight=1 max_fails=3; }server {listen 80;server_name www.b.net;index index.html index.htm index.jsp;access_log /data/logs/www.b.net/access.log main;location / {proxy_pass http://www_b;proxy_cache bcache;proxy_cache_key $request_uri;proxy_cache_valid 200 301 302 1m;proxy_cache_valid 404 1m;proxy_set_header Host $host;proxy_set_header X-Forward-For $remote_addr;proxy_read_timeout 60s;add_header X-Cache $upstream_cache_status;} }[root@Bj-1-141 conf.d]# mkdir -pv /data/logs/{www.a.com,www.b.net} mkdir: created directory ‘/data’ mkdir: created directory ‘/data/logs’ mkdir: created directory ‘/data/logs/www.a.com’ mkdir: created directory ‘/data/logs/www.b.net’ You have new mail in /var/spool/mail/root [root@Bj-1-141 conf.d]# mkdir -pv /var/cache/nginx/{a.com,b.net} mkdir: created directory ‘/var/cache/nginx/a.com’ mkdir: created directory ‘/var/cache/nginx/b.net’ [root@Bj-1-141 conf.d]# chown -R nginx.nginx /var/cache/nginx/# 檢查配置文件語(yǔ)法 [root@Bj-1-141 nginx]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful##4、配置后端Tomcat服務(wù)器 兩臺(tái)后端服務(wù)器同時(shí)安裝配置tomcat服務(wù)。
# 安裝配置jdk [root@bj-1-142 ~]# tar xf jdk-8u121-linux-x64.tar.gz -C /usr/local/ [root@bj-1-142 ~]# ln -sv /usr/local/jdk1.8.0_121/ /usr/local/jdk "/usr/local/jdk" -> "/usr/local/jdk1.8.0_121/" [root@bj-1-142 ~]# vim /etc/profile.d/java.sh export JAVA_HOME=/usr/local/jdk export JRE_HOME=/usr/local/jdk/jre/ export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar# 安裝配置tomcat [root@bj-1-142 ~]# tar xf apache-tomcat-8.0.41.tar.gz -C /usr/local/ [root@bj-1-142 ~]# cd /usr/local/ [root@bj-1-142 local]# mv apache-tomcat-8.0.41/ apache-tomcat-8080 [root@BJ-1-143 local]# cd apache-tomcat-8080/webapps/ [root@BJ-1-143 webapps]# rm -fr ./* [root@BJ-1-143 webapps]# mkdir ROOT [root@BJ-1-143 webapps]# cd ROOT/ # 此處使用的war包為京峰教育開(kāi)源貢獻(xiàn)的一個(gè)war包,非常感謝京峰教育的提供。 [root@BJ-1-143 ROOT]# unzip edu.war # 啟動(dòng)tomcat服務(wù) [root@BJ-1-143 ROOT]# cd ../../ [root@BJ-1-143 apache-tomcat-8080]# ./bin/catalina.sh start注意:為了區(qū)分兩個(gè)域名請(qǐng)求的結(jié)果不一樣,故意讓兩個(gè)站點(diǎn)其中一個(gè)圖片不一樣。
直接訪問(wèn)192.168.1.142:8080查看結(jié)果: ##5、啟動(dòng)nginx服務(wù)
[root@Bj-1-141 ~]# systemctl start nginx.service [root@Bj-1-141 ~]# ss -tnl|grep 80 LISTEN 0 128 *:80 *:*配置本地hosts文件將www.a.com和www.b.net域名都解析至192.168.1.141nginx服務(wù)器上。
192.168.1.141 www.a.com www.b.net瀏覽器中請(qǐng)求www.a.com查看結(jié)果
瀏覽器中請(qǐng)求www.b.net查看結(jié)果
至此一個(gè)非常簡(jiǎn)單的Nginx反向代理就結(jié)束了。工作中后端的服務(wù)器不只一臺(tái),多臺(tái)后端服務(wù)器時(shí)只要在upstream中添加多個(gè)server就可以了。另外也可以在tomcat服務(wù)器上安裝nginx由nginx轉(zhuǎn)發(fā)至127.0.0.1:8080。
轉(zhuǎn)載于:https://my.oschina.net/jiangshanlinux/blog/1514288
總結(jié)
以上是生活随笔為你收集整理的Nginx反向代理实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux服务器CPU性能模式
- 下一篇: 【Nginx服务优化与防盗链】