目录

  1. 初识Nginx
    1. 概念
      1. 反向代理
      2. 负载均衡
      3. 动静分离
    2. 安装
      1. windows上安装
      2. Linux上安装
    3. Nginx 常用命令
    4. Nginx配置参数

初识Nginx

dogsmail.png

概念

Nginx进行反向代理、负载均衡

Nginx (engine x) 是一个高性能的HTTP反向代理web服务器,

Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好

Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。

https://zhuanlan.zhihu.com/p/364588916

反向代理

正向代理:代理客户端的就是正向代理

反向代理:代理服务器端的就是反向代理。一个域名后可能不止一台服务器,但是用户无感知服务器中动态扩容了多少台服务器。

负载均衡

https://zhuanlan.zhihu.com/p/151835622

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展轮询

轮询:请求依次轮发到每一个服务器中

加权轮询:按照不同服务器设置的权重的比例来处理请求

Ip hash:根据ip来进行计算,发送到固定的服务器中。为了解决用户的session存放在某个tomcat中,但是会被转发到其他服务器中处理请求的情况。实际使用Redis来处理,做session共享会更好。

动静分离

在软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件成为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。

1677912711483

安装

windows上安装

https://nginx.org/en/download.html

下载后解压到中文目录中,conf 文件夹中存放配置文件。然后在命令行中启动 nginx.exe 文件。

访问 localhost:80 出现 Nginx 欢迎页面即为启动成功。

Linux上安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 查找是否有Nginx,如果有的话需要先卸载(卸载就是删除掉nginx)
whereis nginx

# 解压文件
tar -zxvf nginx-1.22.1.tar.gz
cd nginx-1.22.1

# 配置
./configure

# 执行后make下(为什么make呢)
make
make install

# 这时时可以查到nginx的位置了
whereis nginx
cd /usr/local/nginx
cd sbin/

# 启动nginx,下面的命令执行成功后是无任何显示的
./nginx

# 配置文件conf的位置
/usr/local/nginx/conf
cat nginx.conf

# 在server中,可以看到listen的端口
server {
listen 80;
server_name localhost;

如果从指定的端口无法访问,请检查以下几项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 1. 查看nginx是否是启动状态

systemctl status nginx

# 2. 查看防火墙开放的临时端口和永久端口,如果端口未开放需要开放端口,常用命令如下所示:


# 查看防火墙状态
systemctl status firewalld
# 如果不是显示active状态,需要打开防火墙
systemctl start firewalld
# 查看所有已开放的临时端口(默认为空)
firewall-cmd --list-ports
# 查看所有永久开放的端口(默认为空)
firewall-cmd --list-ports --permanent
# 添加临时开放端口(例如:比如我修改ssh远程连接端口是223,则需要开放这个端口)
firewall-cmd --add-port=223/tcp
# 添加永久开放的端口(例如:223端口)
firewall-cmd --add-port=223/tcp --permanent
# 关闭临时端口
firewall-cmd --remove-port=80/tcp
# 关闭永久端口
firewll-cmd --remove-port=80/tcp --permanent
# 配置结束后需要输入重载命令并重启防火墙以生效配置
firewall-cmd --reload
systemctl restart firewalld

# 3. 如果用的是云服务器,检查服务器端口是否开放了

防火墙常用命令原文地址:https://www.cnblogs.com/ketoli/p/15111625.html

Nginx 常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd /usr/local/nginx/sbin/
# 启动
./nginx

# 停止,强制停止
./ nginx

# 安全退出,会将所有的进程一个一个进行停止
./nginx/ -s quit

# 重新加载配置文件,常用,更改配置文件后就需要重新加载
./nginx -s reload

# 查看 nginx 进程
ps aux|grep nginx

Nginx配置参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
全局配置,配置全局生效
#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

envents是最大连接数
events {
worker_connections 1024;
}

http全局配置,静态资源文件配置
http {

# upstream xx{
# 负载均衡配置
# }

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

include 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 logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;
server中配置不同的服务
server {
listen 80;
server_name localhost;
这里可以配置代理

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root html;
index index.html index.htm;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
......