Skip to content

常见使用版本

Nginx开源版:https://nginx.org

Nginx-plus商业版:https://www.nginx.com

OpenResty:https://openresty.org/cn

Tengine:https://tengine.taobao.org

使用apt命令安装nginx

注:以下命令都是在root用户下使用

安装命令

bash
apt install nginx

查看版本

bash
nginx -v

启动

bash
systemctl start nginx

查看状态

systemctl status nginx

文件位置

  • /usr/sbin/nginx:主程序
  • /etc/nginx:存放配置文件
  • /usr/share/nginx:存放静态文件
  • /var/log/nginx:存放日志

卸载

先停止nginx

bash
systemctl stop nginx

通过apt-get命令卸载nginx

bash
apt-get --purge autoremove nginx

使用源码编译安装nginx

下载nginx相关依赖包:

apt-get install gcc

apt-get install libpcre3 libpcre3-dev

apt-get install zlib1g zlib1g-dev

sudo apt-get install openssl

sudo apt-get install libssl-dev

从官网上下载对应的安装包

  • 下载的nginx是tar.gz文件,命令:tar -zvxf nginx-x.x.x.tar.gz

  • 下载的nginx是zip文件,命令:unzip nginx-1.24.0.tar.gz

进入解压后的文件夹

配置

bash
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

说明:

--prefix=/usr/local/nginx:指定安装目录为/usr/local/nginx。在编译和安装完成后,软件将被安装到该目录下. --with-http_stub_status_module:启用 HTTP Stub Status 模块。该模块是 Nginx 的一个内置模块,用于获取 Nginx 服务器的状态信息。 --with-http_ssl_module:启用 HTTP SSL 模块。该模块使得 Nginx 支持通过 HTTPS 提供安全的加密传输

编译:make

安装:make install

启动或关闭

bash
#切换到nginx的安装目录
 
cd /usr/local/nginx/sbin
 
 
#启动nginx
 
./nginx

#快速停止
./nginx -s stop 

#在退出前完整已经接受的连接请求
./nginx -s quit

#重新加载配置
./nginx -s reload

注册为系统服务

/etc/systemd/system/ 目录下创建一个新的服务文件,例如 nginx.servicevi /etc/systemd/system/nginx.service

在打开的文件中,添加以下内容:

bash
[Unit]
Description=Nginx HTTP Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

执行以下命令重新加载 systemd 配置文件:

bash
systemctl daemon-reload

执行以下命令启动 Nginx 服务:

bash
systemctl start nginx

现在,Nginx 将作为系统服务在后台运行

如果你希望 Nginx 在系统启动时自动启动,可以执行以下命令设置开机自启动:

bash
systemctl enable nginx

这样,Nginx 将在系统启动时自动启动

Docker 安装

首先获取镜像:

shell
docker pull nginx

创建一个 .sh 文件,然后把下面内容填写进去

shell
#!/bin/bash

# 检查参数数量
if [ $# -ne 2 ]; then
    echo "用法: $0 <挂载目录> <监听端口>"
    exit 1
fi

# 定义变量
MOUNT_DIR=$1
HOST_PORT=$2

# 创建挂载目录结构
echo "正在创建挂载目录..."
mkdir -p "${MOUNT_DIR}/conf"
mkdir -p "${MOUNT_DIR}/log"
mkdir -p "${MOUNT_DIR}/html"

# 清理已存在的nginx容器
echo "正在清理已存在的nginx容器..."
docker stop nginx 2>/dev/null || true
docker rm nginx 2>/dev/null || true

# 创建临时容器用于提取配置文件
echo "正在创建临时容器以提取配置文件..."
docker create --name temp-nginx nginx > /dev/null
docker start temp-nginx > /dev/null

# 从临时容器复制配置文件和目录
echo "正在复制配置文件..."
docker cp temp-nginx:/etc/nginx/nginx.conf "${MOUNT_DIR}/conf/nginx.conf"
docker cp temp-nginx:/etc/nginx/conf.d "${MOUNT_DIR}/conf/"
docker cp temp-nginx:/usr/share/nginx/html "${MOUNT_DIR}/"

# 清理临时容器
echo "正在清理临时容器..."
docker stop temp-nginx > /dev/null
docker rm temp-nginx > /dev/null

# 运行最终的nginx容器
echo "正在启动nginx容器..."
docker run -d \
    -p "${HOST_PORT}:80" \
    --name nginx \
    -v "${MOUNT_DIR}/conf/nginx.conf:/etc/nginx/nginx.conf" \
    -v "${MOUNT_DIR}/conf/conf.d:/etc/nginx/conf.d" \
    -v "${MOUNT_DIR}/log:/var/log/nginx" \
    -v "${MOUNT_DIR}/html:/usr/share/nginx/html" \
    nginx

echo "✅ Nginx容器已启动"
echo "   宿主机访问端口: ${HOST_PORT}"
echo "   挂载目录: ${MOUNT_DIR}"

最后输入命令:

shell
sh [file].sh [path] [port]

# 例子
sh dev.sh ~/apps/nginx 80