简单实现nginx反向代理、负载均衡

1.1.nginx简介

Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx1.0.4发布。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

1.2.安装

1.2.1.安装GCC编译器等工具

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

1.2.2.安装 PCRE

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

1.2.3.解压安装包

tar zxvf pcre-8.35.tar.gz

1.2.4.进入目录

cd pcre-8.35

1.2.5编译安装

./configure

make && make install

1.2.6 查看pcre版本

pcre-config --version

1.2.7 安装nginx

1>在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo

进入插入模式写入以下内容:

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/6/$basearch/

gpgcheck=0

enabled=1

wq!保存,会产生一个/etc/yum.repos.d/nginx.repo文件。

下面直接安装nginx就ok

yum install nginx -y

走到这里说明已经在下载了

安装完成,下面直接就可以启动Nginx了

service nginx start

这样说明启动成功了

启动成功直接访问服务器就可以到达nginx的欢迎页面

注:如果无法访问,关闭防火墙重启服务器即可

1.3 nginx实现反向代理

1.3.1 修改配置文件/etc/nginx/nginx.conf

# 定义Nginx运行的用户 和 用户组 如果对应服务器暴露在外面的话建议使用权限较小的用户 防止被入侵

user root;

#Nginx进程数, 建议设置为等于CPU总核心数

worker_processes 1;

#开启全局错误日志类型

error_log /var/log/nginx/error.log warn;

#进程文件

pid /var/run/nginx.pid;

events {

#单个进程最大连接数

worker_connections 1024;

}

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_nopush on;

keepalive_timeout 65;

#gzip on;

server {

listen 80;

server_name 192.168.2.131; #本机IP

location / {

proxy_pass https://www.baidu.com;

}

}

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

}

这样就说明反向代理成功了

1.4 nginx实现负载均衡

1.4.1 安装JDK

yuminstall-yjava-1.8.0-openjdk-devel.x86_64

1.4.2 新建测试SpringBoot项目

我们用1台服务器模拟3台服务器的效果

所以我们只需要把项目端口号改成不一致的就ok

注意:我们是1台nginx服务器作为负载均衡服务器,还有1台应用服务器运行3个端口号不同的Tomcat模拟3台应用服务器

index代码 body内容 01 02 03 作为区分

<!DOCTYPE html>Titlenginx 01

Controller代码做个简单跳转

packagecom.cyh.nginx;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;/**

* @author Caiyuhui on 2019/8/24.

*/@Controllerpublic class MyController { @RequestMapping("/toIndex") public String toIndex(){return"index"; }}

打成jar包后我们通过XShell上传至服务器

1.4.3 修改配置文件

修改 /etc/nginx/nginx.conf

# 定义Nginx运行的用户 和 用户组 如果对应服务器暴露在外面的话建议使用权限较小的用户 防止被入侵

user root;

#Nginx进程数, 建议设置为等于CPU总核心数

worker_processes 1;

#开启全局错误日志类型

error_log /var/log/nginx/error.log warn;

#进程文件

pid /var/run/nginx.pid;

events {

#单个进程最大连接数

worker_connections 1024;

}

http {

#扩展名与文件类型映射表

include /etc/nginx/mime.types;

#默认类型

default_type application/octet-stream;

#Nginx进程数, 建议设置为等于CPU总核心数

worker_processes 1;

#开启全局错误日志类型

error_log /var/log/nginx/error.log warn;

#进程文件

pid /var/run/nginx.pid;

events {

#单个进程最大连接数

worker_connections 1024;

}

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_nopush on;

keepalive_timeout 65;

#gzip on;

#负载均衡组

upstream cyh{

server 192.168.2.132:8081;

server 192.168.2.132:8082;

server 192.168.2.132:8083;

}

server {

listen 80;

server_name 192.168.2.131; #使用nginx服务器IP,集群使用虚ip

location / {

proxy_pass http://cyh;

}

}

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

}

每次刷新都是不同的Tomcat说明负载均衡部署好了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容