Nginx

86 阅读7分钟

一、概念

介绍

nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强。

正向代理

如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

反向代理

反向代理,其实客户端对代理是无感知的,客户端不需要任何配置就可以访问,只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端。 此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是反向代理服务器地址,隐藏了真实服务器IP地址。

负载均衡

当单个服务器解决不了请求时,我们需要增加服务器的数量,然后将请求分发到各个服务器上。 将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。

动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。

二、安装

1.查看开放的端口号

firewall-cmd --list-all

2.开放80、443端口(若已开放则跳过)

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent

3.重启防火墙(设置生效)(若已开放则跳过)

firewall-cmd --reload

4.安装gcc依赖

yum -y install gcc zlib zlib-devel openssl openssl-devel pcre pcre-devel

5.进入/home目录下载nginx软件包

wget https://nginx.org/download/nginx-1.20.1.tar.gz

6.解压nginx软件包

tar -zxvf nginx-1.20.1.tar.gz

7.进入解压缩目录

cd nginx-1.20.1

8.执行configure

./configure

9.执行make

make && make install

三、启动

1.进入nginx工作目录

cd /usr/local/nginx

2.进入执行目录

cd sbin/

3.启动nginx

./nginx

四、常用命令

1.启动

./nginx

2.停止

./nginx -s stop

3.安全退出

./nginx -s quit

4.重启nginx

./nginx -s reload

5.查看nginx进程

ps aux|grep nginx

6.关闭防火墙

systemctl stop firewalld.service

7.防火墙禁止开机启动

systemctl disable firewalld.service

五、配置

配置文件位置
cd /usr/local/nginx/conf/nginx.conf
配置文件内容
# 全局块:配置服务器整体运行的配置指令
worker_processes 1;	 		# 处理并发数的配置
# events块:主要影响Nginx服务器与用户的网络连接
worker_connections 1024; 	# 支持的最大连接数为 1024
# http块:包含两部分
http全局块 # http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
server块 # 这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

ps:每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。

六、实战

(一)反向代理一

实现
由nginx反向代理到tomcat页面

nginx监听端口为80
访问"ip"直接跳转到"127.0.0.1:8080"
安装并配置jdk

1.tomcat运行需要jdk环境,所以要先配置jdk 2.下载:查找能够安装的jdk版本

yum -y list java*

3.安装jdk1.8

yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 

4.查看jdk是否安装完成

java -version

5.配置环境变量

vi /etc/profile

6.将下面内容粘贴到/etc/profile中:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

7.让设置立即生效

source /etc/profile

8.查看是否配置成功

echo $JAVA_HOME
echo $CLASSPATH
echo $PATH
开放端口

1.开放8080端口

firewall-cmd --add-port=8080/tcp --permanent

2.重新加载防火墙

firewall-cmd --reload

3.查看已经开放的端口号(检查8080是否已开放)

firewall-cmd --list-all
安装tomcat

1.下载tomcat

wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.70/bin/apache-tomcat-8.5.70.tar.gz

2.解压tomcat

tar -zxvf apache-tomcat-8.5.70.tar.gz

3.进入tomcat的bin目录中

cd apache-tomcat-8.5.70/bin

4.启动tomcat服务器(不修改配置,使用默认端口8080)

./startup.sh

ps:如果提示没有logs目录,就返回tomcat目录用"mkdir logs"命令创建logs目录,再重启nginx。

配置nginx

1.进入nginx配置文件

cd /usr/local/nginx/conf/nginx.conf

2.server块配置如下内容

location / {
    root   html;
    proxy_pass  http://127.0.0.1:8080;
    index  index.html index.htm;
}
测试

1.重启nginx

./nginx -s reload

2.浏览器输入"服务器ip"查看是否访问到tomcat页面。

(二)反向代理二

实现
使用nginx反向代理,根据访问路径的不同跳转到不同端口的tomcat页面。

nginx监听端口为9001
访问"ip:9001/a"直接跳转到"127.0.0.1:8080"
访问"ip:9001/b"直接跳转到"127.0.0.1:8081"
安装并配置jdk

1.tomcat运行需要jdk环境,所以要先配置jdk 2.下载:查找能够安装的jdk版本

yum -y list java*

3.安装jdk1.8

yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 

4.查看jdk是否安装完成

java -version

5.配置环境变量

vi /etc/profile

6.将下面内容粘贴到/etc/profile中:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

7.让设置立即生效

source /etc/profile

8.查看是否配置成功

echo $JAVA_HOME
echo $CLASSPATH
echo $PATH
开放端口

1.开放8080端口

firewall-cmd --add-port=8080/tcp --permanent

2.开放8081端口

firewall-cmd --add-port=8081/tcp --permanent

3.重新加载防火墙

firewall-cmd --reload

4.查看已经开放的端口号

firewall-cmd --list-all
配置tomcat

1.创建两个tomcat目录

mkdir /home/8080
mkdir /home/8081

2.8080目录下载tomcat

cd /home/8080
wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.70/bin/apache-tomcat-8.5.70.tar.gz

3.8081目录下载tomcat

cd /home/8081
wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.70/bin/apache-tomcat-8.5.70.tar.gz

4.8080目录解压tomcat

cd /home/8080
tar -zxvf apache-tomcat-8.5.70.tar.gz

5.8080目录解压tomcat

cd /home/8081
tar -zxvf apache-tomcat-8.5.70.tar.gz

6.进入8081目录的tomcat的conf目录中(8080是默认端口,只需改8081)

cd 8081/apache-tomcat-8.5.70/conf

7.修改配置

vi server.xml

8.将默认8080端口修改为8081 (将默认shutdown端口8005修改为8015(防止tomcat停止服务端口冲突))

<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
<Server port="8015" shutdown="SHUTDOWN">

9.分别启动两个tomcat服务器

/home/8080/startup.sh
/home/8081/startup.sh

ps:如果提示没有logs目录,就返回tomcat目录用"mkdir logs"命令创建logs目录,再重启nginx。

配置nginx

1.进入nginx配置文件

cd /usr/local/nginx/conf/nginx.conf

2.server块配置如下内容

        location /a {
            proxy_pass  http://127.0.0.1:8080;
        }
        location /b {
            proxy_pass  http://127.0.0.1:8081;
        }
创建index页面

1.进入8080目录下的tomcat的webapps目录

cd 8080/apache-tomcat-8.5.70/webapps

2.创建a目录

mkdir a

3.创建index页面

touch index.html

4.index.html修改如下内容

<h1>8080<h1>

1.进入8081目录下的tomcat的webapps目录

cd 8081/apache-tomcat-8.5.70/webapps

2.创建b目录

mkdir b

3.创建index页面

touch index.html

4.index.html修改如下内容

<h1>8081<h1>
测试

1.重新加载配置文件

./nginx -s reload

2.浏览器访问"服务器ip:9001/a"查看是否访问到8080/tomcat页面 3.浏览器访问"服务器ip:9001/b"查看是否访问到8081/tomcat页面

(三)负载均衡

实现
使用nginx反向代理,实现负载均衡效果,平均8080和8081端口中

nginx监听端口为80
访问"ip"在"127.0.0.1:8080"和"127.0.0.1:8081"之间轮询
准备工作

1.准备两台tomcat服务器,一台8080端口,一台8081端口。(参考反向代理二中"配置tomcat") 2.在两台tomcat里的webapps目录中,创建名称是page目录,在page目录中创建"index.html"文件。(参考反向代理二中"创建index页面") 3.8080端口服务器的"index.html"内容为

<h1>权重3:8080<h1>

4.8081端口服务器的"index.html"内容为

<h1>权重1:8081<h1>
配置nginx

1.进入nginx配置文件

cd /usr/local/nginx/conf/nginx.conf

2.配置如下内容

upstream vcz {
        server 127.0.0.1:8080 weight=3;
        server 127.0.0.1:8081 weight=1;
    }   

    server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass  http://vcz;
        }
测试

1.重新加载配置文件

./nginx -s reload

2.浏览器访问"服务器ip/page"查看是否以3比1权重在"8080端口的tomcat"和"8081端口的tomcat"之间轮询。