直接安装
安装依赖包
1 2
| # 一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
|
下载并解压安装包
1 2 3 4 5 6 7
| # 创建一个文件夹 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
1 2 3 4 5 6 7 8 9 10
| # 进入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
1 2
| # 打开并修改配置文件 vi /usr/local/nginx/conf/nginx.conf
|
启动nginx
1
| /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
|
查看nginx进程
端口开放
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # 服务器在防火墙中将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
|
常用命令
1 2 3 4 5 6 7 8 9
| # 进入安装目录中, 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)
1 2
| # 解决办法:使用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)
设置开机自启
创建nginx.service 文件
1
| vi /lib/systemd/system/nginx.service
|
nginx.service内容配置
1 2 3 4 5 6 7 8 9 10 11 12 13
| [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注册系统服务后相关指令
1 2 3 4 5 6 7 8 9 10 11 12
| # 启动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
1 2
| # 比如上传限制为100兆 client_max_body_size 100m;
|
开启ssl模块
1 2 3
| ./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镜像
运行Nginx容器,并将其暴露在端口80上。您可以根据需要将它映射到其他端口。在这个例子中,我们将宿主机的80端口映射到容器的80端口
1
| 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容器,请运行以下命令
1 2
| docker stop my-nginx docker rm my-nginx
|
如果您需要对Nginx进行配置或添加自定义内容,请使用卷(volume)或绑定挂载(bind mount)将宿主机的配置文件或内容目录映射到容器内。
假设您正在运行一个Nginx容器,您希望将宿主机上的一个目录(/home/user/www
)作为Nginx容器内的Web内容根目录(/usr/share/nginx/html
),您可以执行以下命令:
1 2 3
| 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中的)
1 2 3 4 5
| docker run --name my-nginx \ -p 80:80 \ -p 443:443 \ -v /home/user/custom-nginx.conf:/etc/nginx/nginx.conf \ -d nginx
|
重新加载
1 2 3
| docker exec my-nginx nginx -s reload # 或者 docker restart my-nginx
|
最后启动合并示例
1 2 3 4 5 6 7 8
| 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
|