直接安装

安装依赖包

# 一键安装上面四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

下载并解压安装包

# 创建一个文件夹
cd /usr/local
mkdir nginx
cd nginx
# 下载tar包
wget http://nginx.org/download/nginx-1.25.3.tar.gz
tar -xvf nginx-1.25.3.tar.gz

安装nginx

# 进入nginx目录
cd /usr/local/nginx/nginx-1.25.3
# 执行默认安装命令
./configure
# 或者可以增加插件安装
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module
# 执行make命令
make
# 覆盖安装执行make install命令
make install

配置nginx.conf

# 打开并修改配置文件
vi /usr/local/nginx/conf/nginx.conf

启动nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

查看nginx进程

ps -ef | grep nginx

端口开放

# 服务器在防火墙中将nginx映射端口打开
# 云服务器在安全组中将nginx映射端口配置
# 服务器端口放开
firewall-cmd --zone=public --add-port=端口/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 防火墙放开端口列表
firewall-cmd --zone=public --list-ports

# tcp端口
iptables -A INPUT -p tcp -m tcp --dport 要开放的端口 -j ACCEPT
# udp端口
iptables -A INPUT -p udp -m udp --dport 要开放的端口 -j ACCEPT

service iptables start
service iptables restart

常用命令

# 进入安装目录中,
cd /usr/local/nginx/sbin
# 启动
./nginx -s start
# 关闭
./nginx -s stop 
# 重启
./nginx -s reload 

启动报错

No such file or directory

nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)

# 解决办法:使用nginx -c的参数指定nginx.conf文件的位置
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
No such process

nginx 启动报错nginx: [alert] kill(15368, 1) failed (3: No such process)

image

设置开机自启

创建nginx.service 文件
vi /lib/systemd/system/nginx.service
nginx.service内容配置
[Unit]
Description=nginx
After=network.target
  
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c  /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target
nginx注册系统服务后相关指令
# 启动nginx
systemctl start nginx.service
# 设置开机自启动
systemctl enable nginx.service
# 停止开机自启动
systemctl disable nginx.service
# 查看服务当前状态
systemctl status nginx.service
# 重新启动服务
systemctl restart nginx.service
# 查看所有已启动的服务
systemctl list-units --type=service

文件上传限制,设置nginx.conf

# 比如上传限制为100兆
client_max_body_size 100m;

开启ssl模块

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# 替换
cp ./objs/nginx /usr/local/nginx/sbin/

使用docker

从Docker Hub拉取最新的Nginx镜像

docker pull nginx

运行Nginx容器,并将其暴露在端口80上。您可以根据需要将它映射到其他端口。在这个例子中,我们将宿主机的80端口映射到容器的80端口

docker run --name my-nginx -p 80:80 -p 443:443 -d nginx

--name 选项为容器命名,以便将来可以方便地引用它。您可以选择一个不同的名称。

-p 选项用于指定端口映射。格式为 宿主机端口:容器端口

-d 选项让容器在后台运行。

通过访问 http://your-server-ip 或者 http://localhost(如果您在本地运行)来验证Nginx是否已成功运行。您应该看到Nginx的默认欢迎页面。

若要停止并删除Nginx容器,请运行以下命令

docker stop my-nginx
docker rm my-nginx

如果您需要对Nginx进行配置或添加自定义内容,请使用卷(volume)或绑定挂载(bind mount)将宿主机的配置文件或内容目录映射到容器内。

假设您正在运行一个Nginx容器,您希望将宿主机上的一个目录(/home/user/www)作为Nginx容器内的Web内容根目录(/usr/share/nginx/html),您可以执行以下命令:

docker run -v /path/to/your/host-directory-1:/path/in/container-1 \
           -v /path/to/your/host-directory-2:/path/in/container-2 \
           your-image

现在,容器中的/usr/share/nginx/html目录将映射到宿主机上的/home/user/www目录,您可以直接在宿主机上对Web内容进行编辑,这些更改将立即反映在容器内。

请注意,绑定挂载的路径必须是绝对路径。另外,在使用绑定挂载时,您需要确保容器中的目录或文件已存在,否则Docker将在宿主机上创建一个新的目录或文件。

使用宿主机内的配置文件(-v中冒号前是宿主机配置文件,后面是docker中的)

docker run --name my-nginx \
  -p 80:80 \
  -p 443:443 \
  -v /home/user/custom-nginx.conf:/etc/nginx/nginx.conf \
  -d nginx

重新加载

docker exec my-nginx nginx -s reload
# 或者
docker restart my-nginx

最后启动合并示例

docker run --name my-nginx \
  -p 80:80 \
  -p 443:443 \
  -v /home/hexoBlog:/home/hexoBlog \
  -v /home/cdn:/home/cdn \
  -v /home/nginx/ssl:/usr/local/nginx/ssl \
  -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf \
  -d nginx