文档章节

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
究竟啥才是互联网架构“高可用”

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

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

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

LionelShen
2016/12/06
45
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

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 有一天考拉麻麻拉肚子了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享周汇洋的单曲《Man Srae(曼斯拉之舞)》:美滋滋。。。。 手机党少年们想听歌,请使劲儿戳(这里) 我听了一下 赶紧关了, ...

小小编辑
15分钟前
2
0
oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
5
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部