什么是Nginx
Nginx是高性能的HTTP和反向代理服务器.
Nginx是轻量级的支持高并发的WEB服务器.
WEB服务器的基本功能:基于REST架构风格,以统一资源描述符或者统一资源定位符作为沟通依据,通过HTTP为浏览器等客户端程序提供各种网络服务.
Nginx的特点
1.快
正常情况下,单次请求会得到更快的响应.
在高峰期,Nginx可以比其它WEB服务器更快地响应请求.
2.高可靠性
master进程在1个worker进程出错时可以快速拉起新的worker子进程提供服务.
3.高扩展性
4.低内存消耗
5.单机支持10万以上的并发连接
6.热部署
7.最自由的BSD许可协议
Nginx的作用
正向代理
负载均衡
反向代理
动静态分离
Nginx安装(默认编译与安装)
安装Nginx依赖
yum install -y pcre pcre-devel gcc gcc-c++ zlib zlib-devel openssl openssl-devel
下载并启动Nginx
创建目录 mkdir /usr/local/nginx
进入目录 cd /usr/local/nginx
下载 wget http://nginx.org/download/nginx-1.21.3.tar.gz
解压 tar -xzvf nginx-1.21.3.tar.gz
编译 执行① ./configure 执行②make 执行③make install
启动Nginx ./usr/local/nginx/sbin/nginx
检查是否启动成功 ps -ef|grep -v grep|grep nginx
验证
关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
浏览器上通过IP+Port访问
通过域名访问Nginx配置
在Win10系统上安装虚拟机,在虚拟机上正常且正确安装Nginx后,通过192.168.101.10就可以访问到Welcome to nginx!.
如果要想通过域名访问需要在Win10的C:\Windows\System32\drivers\etc\hosts文件中做修改:
192.168.101.10 www.kong1.com
就可以通过www.kong1.com访问Welcome to nginx!.
Keepalived安装
rpm -qa keepalived
yum install keepalived -y
cd /etc/keepalived/
vi /etc/keepalived/keepalived.conf
安装JDK
手动安装JDK
下载JDK https://www.oracle.com/java/technologies/downloads/#java8
创建JDK安装目录
mkdir /middleware/jdk/jdk1.8
tar -xzvf jdk-8u301-linux-x64.tar
vim /etc/profile
#JDK
export JAVA_HOME=/middleware/jdk/jdk1.8/jdk1.8.0_301
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
source /etc/profile #使配置生效
可输入java/javac/java -version命令判断新配置的java环境是否正常
使用yum源安装JDK
查看yum库中都有哪些jdk版本
yum search java|grep jdk
选择指定的版本安装
yum install java-1.8.0-openjdk
安装完成后查看版本信息
java -version
安装Tomcat
下载Tomcat https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.72/bin/
创建Tomcat安装目录
mkdir /middleware/tomcat/apache-tomcat-8.5.72
tar -xzvf apache-tomcat-8.5.72.tar.gz
通过复制最终实现安装多个Tomcat
/app/apache-tomcat-srv01
/app/apache-tomcat-srv02
修改vim /etc/profile文件
#FirstTomcat
export CATALINA_BASE1=/app/apache-tomcat-srv01
export CATALINA_HOME1=/app/apache-tomcat-srv01
export TOMCAT_HOME1=/app/apache-tomcat-srv01
#SecondTomcat
export CATALINA_BASE2=/app/apache-tomcat-srv02
export CATALINA_HOME2=/app/apache-tomcat-srv02
export TOMCAT_HOME2=/app/apache-tomcat-srv02
修改/app/apache-tomcat-srv01/bin和/app/apache-tomcat-srv02/bin下的catalina.sh(也可以通过直接修改Tomcat的启停脚本来实现)
修改的位置为这个注释这# OS specific support. $var _must_ be set to either true or false.
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
修改的位置为这个注释这# OS specific support. $var _must_ be set to either true or false.
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
修改vim /app/apache-tomcat-srv01/conf/server.xml和vim /app/apache-tomcat-srv02/conf
/server.xml
srv01
HTTP访问端口
<Connector port="8001" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
负责接收其它HTTP服务器的请求端口
<Connector protocol="AJP/1.3"
address="::1"
port="8109"
redirectPort="8443" />
监听Tomcat关闭的端口
<Server port="8105" shutdown="SHUTDOWN">
srv02
HTTP访问端口
<Connector port="8002" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
负责接收其它HTTP服务器的请求端口
<Connector protocol="AJP/1.3"
address="::1"
port="8110"
redirectPort="8443" />
监听Tomcat关闭的端口
<Server port="8106" shutdown="SHUTDOWN">
启动srv01和srv02实例
通过浏览器访问192.168.101.10:8001和182.168.101.10:8002
修改Tomcat页面 vi /app/apache-tomcat-srv01/webapps/ROOT/index.jsp
<body>
<p>Tomcat srv01 8001</p>
修改Tomcat页面 vi /app/apache-tomcat-srv02/webapps/ROOT/index.jsp
<body>
<p>Tomcat srv02 8002</p>
这样修改就可以知道自己访问的是哪个Tomcat了.
负载均衡是做反向代理的目的之一.
Nginx实现反向代理配置实例
然后修改虚拟机上的vi /usr/local/nginx/conf/nginx.conf配置
{
upstream myserver {
server 192.168.101.10:8001;
server 192.168.101.10:8002;
}
server {
listen 80;
server_name www.kong1.com;
location / {
root html;
index index.html index.htm;
proxy_pass http://myserver;
}
}
}
Nginx实现负载均衡配置实例
{
upstream myserver {
server 192.168.101.10:8001 weight=1;
server 192.168.101.10:8002 weight=6;
}
server {
listen 80;
server_name www.kong1.com;
location / {
root html;
index index.html index.htm;
proxy_pass http://myserver;
}
}
}
Nginx实现动静资源分离配置实例
{
#负载均衡组
#静态服务器组
upstream static {
server 192.168.101.10:8001;
}
#动态服务器组
upstream dynamic {
server 192.168.101.10:8002;
}
#静态资源主机
server {
listen 80;
server_name www.kong1.com;
location / {
root html;
index index.html index.htm;
proxy_pass http://static;
}
}
}
Nginx实现正向代理
Nginx正向代理只能代理http/tcp,不能代理https请求.
正向代理代理的是客户端.
反向代理代理的是服务端.
一般情况下,正向代理是从内网服务器(客户端)访问Nginx,通过Nginx访问的外网资源.
一般情况下,反向代理是从外网访问Nginx,Nginx代理内网的服务器.
服务端(server)
应用在Nginx的server端,不需要server_name,需要添加一个resolver.
{
#处理HTTP转发
server {
listen 80;
resolver 192.168.101.10;
resolver 8.8.8.8; #配置DNS解析IP地址(必需)
resolver 114.114.114.114;
resolver_timeout 5s; #超时时间
location / {
proxy_pass http://$host$request_uri; #设定http代理服务器的协议和地址
root html;
index index.html index.htm;
proxy_pass http://static;
}
}
#处理HTTPS请求
server {
listen 443;
resolver 192.168.101.10;
resolver 8.8.8.8; #配置DNS解析IP地址(必需)
resolver 114.114.114.114;
resolver_timeout 5s; #超时时间
location / {
proxy_pass https://$host$request_uri; #设定http代理服务器的协议和地址
root html;
index index.html index.htm;
proxy_pass http://static;
}
}
}
客户端(client)
一次代理直接在shell执行
export http_proxy=http://192.168.101.10:8001
永久使用
vim /etc/profile
export htt_proxy=192.168.101.10
vim .bashrc
export http_proxy=http://192.168.101.10:8001