文档章节

Nginx反向代理实践

是江山
 是江山
发布于 2017/08/18 16:42
字数 1052
阅读 17
收藏 0
点赞 0
评论 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
苏州
运维
究竟啥才是互联网架构“高可用”

原创 2016-12-05 58沈剑 架构师之路 一、什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 假设系...

毛爷爷夸我帅
2016/12/06
10
0
互联网高可用架构技术实践

一、什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 假设系统一直能够提供服务,我们说系统的可...

LionelShen
2016/12/06
45
0
Nginx 反向代理学习及实例笔记

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

moTzxx
2017/11/23
0
0
nginx从入门到实践

花了一周时间了解nginx相关的知识,主要内容有: 基础知识: Nginx的快速部署安装、模块、基础配置语法,Nginx的日志输出、Nginx默认配置模块、Nginx做为http代理服务,介绍代理服务的类型,正...

898009427
2017/12/06
0
0
nginx操作及配置

nginx处理请求过程:在请求收到后定位到配置文件中描述的相应 location,然后由 handler 生成 response,再由 filter 进行处理。所以模块开发,可以是 handler 模块开发,也可以是 filter 模...

塞上名猪
2017/01/20
0
0
图解正向代理、反向代理、透明代理

套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术。一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代...

悠悠客
2013/07/27
0
14
图解正向代理、反向代理、透明代理

套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术。一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代...

丈量大地
2014/06/20
0
0
图解正向代理、反向代理、透明代理

一、正向代理(Forward Proxy) 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下: 正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin...

_夏天的风_
2014/09/17
0
0
Docker compose基于容器编排构建实践

上一篇我们介绍了通过使用Dockerfile构建LNMP环境,但是我们也发现了其中的缺陷;就是容器多的时候我们管理起来也是不方便的;我们需要考虑的就是把一组环境分组,然后按照执行顺序一键启动即...

小罗ge11
2017/03/03
0
0
Nginx的反向代理与负载均衡

1.1 集群是什么   简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立...

侯召顺
2017/12/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

切分log日志

新建logback.xml放到resource里面 <?xml version="1.0" encoding="utf-8"?><configuration> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <......

talen
7分钟前
0
0
spring @Resource 和 @Autowired 的使用区别

这两个 注解 @Resource 和 @Autowired , 常识都知道 @Resource 是 JAVAEE 自带的,@Autowired 是 spring 的自定义注解。 一般情况下, 使用 bean的时候, 这两个注解 随便使用一个即可。 但...

之渊
12分钟前
0
0
崛起于Springboot2.X之集成MongoDB使用Repository增删改查(26)

1、pom依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version></dependency><dependency> <groupId>log4j</......

木九天
14分钟前
1
0
springboot集成elasticsearch客户端问题记录

1背景说明 服务端ES版本为5.5.2,springboot版本为1.5.6。 工程中添加如下依赖 2问题记录 2.1 NetworkPlugin类找不到 报错java.lang.ClassNotFoundException: org.elasticsearch.plugins.Net...

zjg23
14分钟前
1
0
快速构建ceph可视化监控系统

前言 ceph的可视化方案很多,本篇介绍的是比较简单的一种方式,并且对包都进行了二次封装,所以能够在极短的时间内构建出一个可视化的监控系统 本系统组件如下: ceph-jewel版本 ceph_expor...

万建宁
14分钟前
0
0
Java构造器使用注意

public class 父类A {int age = 10;protected void say() {System.out.println("父类A");}public 父类A() {override();}public void override() {Syst...

咸鱼AI
14分钟前
0
0
TensorFlow 线性分类

构造直线 z = 2 * x - 3 * y + 4 x0*w0+x1*w1+b=0 x1=-x0* w0/w1-b/w1 斜率 k= -w0/w1 截距 -b/w1 随机生成数据,加入一定的偏差,用直线将二维平面分为两部分 使用线性模型拟合参数 损失函数...

阿豪boy
17分钟前
0
0
翻译冒泡排序测试

翻译一个冒泡排序: var a = [1,3,2,4,6,5];var f = 0;var n = a.length ;for( var i =1; i<= n; i++) { for( var j = n-1 ; j >= i; j --) { if(a[j] < a[j+1]) { ......

钟元OSS
19分钟前
0
0
maven父、子级版本号同时修改

命令: mvn versions:set -DnewVersion=0.0.2-SNAPSHOT

沉默的懒猫
20分钟前
0
0
Spring boot中的异常处理之注解响应

Controller层 return patientRepository.findById(id) .orElseThrow(() -> new NotFoundException(String.format("Patient %d not found", id))); Exception类 @ResponseS......

亚林瓜子
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部