文档章节

Nginx反向代理实践

是江山
 是江山
发布于 2017/08/18 16:42
字数 1052
阅读 17
收藏 0

##前言 上一篇解释了Nginx的反向代理模块的用法,本篇主要以实践为主。本次演示并为实现Nginx高可用。仅以演示Nginx反向代理为准。

##实验环境: 三台服务器一台服务器作为前端反向代理,剩下两台服务器为tomcat服务器。

  • 角色 服务器IP地址 域名 OS版本
  • 前端Nginx反向代理 192.168.1.141 CentOS7.2
  • 后端tomcat服务器 192.168.1.142 www.a.com CentOS7.2
  • CentOS7.2 192.168.1.143 www.b.net CentOS7.2

##拓扑图 输入图片说明 ##1、配置Nginx官方YUM源

前端Nginx服务器配置,本次演示使用yum去安装,如果需要源码编译安装请参照之前发的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服务器安装

[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为acache
    proxy_cache_path /var/cache/nginx/a.com levels=2:1 keys_zone=acache:10m max_size=1g;
    # 定义b.net域名的缓存目录,缓存zone为bcache
    proxy_cache_path /var/cache/nginx/b.net levels=2:1 keys_zone=bcache:10m max_size=1g;

    include /etc/nginx/conf.d/*.conf;
}

###(2) 添加虚拟主机配置

[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/

# 检查配置文件语法
[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服务器 两台后端服务器同时安装配置tomcat服务。

# 安装配置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包为京峰教育开源贡献的一个war包,非常感谢京峰教育的提供。
[root@BJ-1-143 ROOT]# unzip edu.war
# 启动tomcat服务
[root@BJ-1-143 ROOT]# cd ../../
[root@BJ-1-143 apache-tomcat-8080]# ./bin/catalina.sh start

注意:为了区分两个域名请求的结果不一样,故意让两个站点其中一个图片不一样。

直接访问192.168.1.142:8080查看结果: 输入图片说明 ##5、启动nginx服务

[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服务器上。

192.168.1.141 www.a.com www.b.net

浏览器中请求www.a.com查看结果 输入图片说明

浏览器中请求www.b.net查看结果

输入图片说明 至此一个非常简单的Nginx反向代理就结束了。工作中后端的服务器不只一台,多台后端服务器时只要在upstream中添加多个server就可以了。另外也可以在tomcat服务器上安装nginx由nginx转发至127.0.0.1:8080。

本文转载自:http://www.codegreen.cn/archives/0628243.html

共有 人打赏支持
是江山
粉丝 4
博文 44
码字总数 24060
作品 0
苏州
运维
jeesz分布式架构-分布式高可用

什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 常见互联网分布式架构如上,分为: (1)客户端...

壹玖
08/09
0
0
Nginx 反向代理学习及实例笔记

背景 前几天在学习负载均衡的知识,遇到了 Nginx 反向代理 的概念,其实在年初就写过一次 Nginx 反向实例的笔记,今天翻看发现很是潦草,而且当时的编辑器也不满足Markdown,作为尴尬症晚期的...

moTzxx
2017/11/23
0
0
用nginx TCP反向代理作mail邮件代理

用nginx TCP反向代理作mail邮件代理 用nginx TCP反向代理作mail邮件代理 1. 背景 新版本nginx有TCP反向代理功能,nginx的mail proxy配置认证又太麻烦,于是就想用TCP反向功能作mail代理。 2....

ygqygq2
2017/08/22
0
0
nginx 入门、安装与简单使用

本文内容: 1. nginx 简介 2. nginx 安装 3. nginx 简单使用 一、Nginx 的三大功能 1.HTTP服务器 Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端...

辣妈程序媛
03/11
0
0
nginx的反向代理配置

首先说明一下,nginx的反向代理和nginx的负载均衡很相似,nginx一般被作为反向代理实现负载均衡,有的人也把nginx的反向代理当做负载均衡,把nginx的负载均衡当做反向代理。nginx有很多功能和...

任小为
2014/08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用碎片化时间Get Linux系统

起初,我做着一份与IT毫无关系的工作,每月领着可怜的工资,一直想改变现状,但无从下手,也就是大家熟知的迷茫。我相信,每一个人都会或多或少的经历过迷茫,迷茫每一个选择,迷茫工作或者生...

Linux就该这么学
19分钟前
0
0
图像显示深入学习一:Activity启动过程

一个月左右写了图像显示深入学习之文章开篇文章表明了自己近期的计划,前半年重新学习了opengl es,c++以及Linux的一些知识,觉得是时候开始看图像这一块的源码了,边看边补缺补漏吧。 作为该...

JerryLin123
42分钟前
1
0
给MySQL授权远程访问

putty登录服务器; 登录MySQL: mysql -u root -p 新建远程用户: CREATE USER 'myusername' IDENTIFIED BY 'mypassword'; 授权: grant all on *.* to john@'101.102.103.104' identified by......

sweethome
今天
1
0
在t-io老巢造谣,不过有造谣的就会有反造谣的!

只发当事人的截图,不发表评论,以免有引导嫌疑 PS: 截图是由不同的人发过来的 本人已经不在此微信群 图3:有造谣的,就有反造谣的 图4是2018-09-23的t-io官方群的一个发言小统计,有助于让...

talent-tan
今天
100
0
heartbeat 资源

drbd+apache+heartbeat : http://blog.51cto.com/11838039/1827901 heartbeat双机热备的架设 : http://blog.51cto.com/11838039/1827560 对heaetbeat的深一步认识 : http://blog.51cto.co......

寰宇01
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部