GitHub 低代码
发布于 

Nginx相关

nginx配置

中文文档: https://www.nginx.cn/doc/index.html
英文文档: http://nginx.org/en/docs/

常用nginx配置模版

1
2
server {
}

常用nginx配置解析

1
2
server {
}

安装Nginx

使用包管理安装 (最简单)

1
2
sudo apt update
sudo apt install nginx

使用储存库(GPG)密钥安装

官网安装教程: http://nginx.org/en/linux_packages.html#Ubuntu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 安装必要依赖
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
# 导入官方的nginx签名密钥,以便apt能够验证软件包的真实性
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

# 添加稳定版的nginx.list
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

# 验证下载的文件是否包含正确的密钥
gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
# 指纹: 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62

# 安装
sudo apt update
sudo apt install nginx

使用docker-compose 安装 nginx

步骤

  • 建立nginx目录, 编写docker-compose.yml 安装nginx
  • 将默认的nginx配置复制到宿主机上, 说明:
    • 在没有nginx配置情况下直接映射卷轴, 那nginx就没有配置了, 启动也不正常
    • 原本nginx的配置已经帮我们 划分好模块管理、配置配置管理, 为何不用
  • 移动nginx配置到 /etc/nginx下
  • 修改 docker-compose.yml 重启nginx
个人拙见

我认为没有很大必要将nginx安装到docker里面, 但是作为学习还是很有必要的, 观点:

  1. nginx是网络层的软件, 而docker是容器, 相当一个虚拟机, 一个软件; 所以nginx应该是更底层的, 应该在系统上
  2. 个人或者小公司只有几台服务器, 安装在系统上更方便
  3. nginx更多是用作是反向代理, 增加服务需要修改配置文件, 映射端口, 徒增复杂度和网络传输链路
  4. docker更偏向于大规模部署, 面对这些大规模部署有更完善更好的方案

建Nginx目录, 安装nginx

  • 建立nginx目录
1
2
3
4
5
6
# 创建nginx的专属目录
mkdir /home/opt/nginx
cd /home/opt/nginx

# 写入配置
vi docker-compose.yml
  • 配置docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3.9'
services:
nginx:
image: nginx:latest
container_name: nginx
restart: always
# 映射端口
ports:
- 80:80
- 443:443
# 数据卷映射 「现在是注释, 等复制完成后再打开」
#volumes:
# - /etc/nginx:/etc/nginx
# - /var/log/nginx:/var/log/nginx
  • 安装nginx并启动服务

将默认的nginx配置复制到宿主机上

1
2
3
4
# 查看nginx服务的容器id
docker ps | grep nginx
# 复制nginx默认配置 「将容器内的nginx配置复制到宿主机的nginx专属目录中」
docker cp container_id(容器id):/etc/nginx/ /opt/nginx/conf

移动配置, 重启服务

  • 移动nginx配置到 /etc/nginx/
  • 修改配置, 将/opt/nginx/docker-compose.yml 的注释打开

  • 重启nginx服务

1
2
docker-compose -f /opt/nginx/docker-compose.yml down
docker-compose -f /opt/nginx/docker-compose.yml up -d

直接下载gz包解压并安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 下载必要依赖
# 依赖可选 openssl-dev 或 libssl-dev
apt-get install gcc libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl

# 下载 (这里选择了 1.21.6版本(2022/01))
nginx_version='1.21.6' # 设置nginx版本
wget http://nginx.org/download/nginx-${nginx_version}.tar.gz
# 解压下的gz包
tar -xvf nginx-${nginx_version}.tar.gz

# 创建nginx
mkdir /usr/local/nginx

# 移动包到 /usr/local/nginx/
sudo mv ./nginx-${nginx_version} /usr/local/nginx/

# 前往操作目录
cd /usr/local/nginx/nginx-${nginx_version}

# 安装nginx
./configure
make # 执行make命令
make install # 执行make install命令 构建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
# 停止服务 (一定要停止服务)
/usr/local/nginx/sbin/nginx -s stop

# 包管理卸载
sudo apt-get --purge remove nginx
sudo apt-get autoremove

# 列出nginx相关的软件
dpkg --get-selections|grep nginx
# 删除nginx相关的软件
sudo apt-get --purge remove nginx
sudo apt-get --purge remove nginx-common
sudo apt-get --purge remove nginx-core

# 确保无nginx进程, 若有则删除
ps -ef |grep nginx
sudo kill -9 XXX(进程PID)

# 查找并删除nginx相关文件
sudo find / -name nginx # 1.找到所有nginx相关内容
sudo rm -rf file(文件名称) # 2. 逐一把查找的的文件删除

# (可选:) 暴力删除, 根据查找到nginx相关内容删除
sudo find / -name nginx -exec rm -rf {} \;

Nginx常用配置

PS: 特别注意

  1. 每个指令必须有分号结束。

额外

无法访问

1.检查云服务提供商的端口限制

2.检查防火墙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sudo ufw app list

# Available applications:
# Nginx Full
# Nginx HTTP
# Nginx HTTPS
# OpenSSH

# 允许通过防火墙
sudo ufw allow 'Nginx HTTP'
# 查看结果
sudo ufw status

# 测试浏览器是否可以访问
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
# 查看公网ip
curl -4 icanhazip.com

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站由 @Kocher 创建,使用 Stellar 作为主题。