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说明负载均衡部署好了