一、前言
Nginx是现代互联网应用的核心枢纽,以其高性能处理海量并发连接而至关重要。它作为反向代理和负载均衡器,是构建高可用、可扩展架构的基石,并能通过高效处理静态内容与缓存极大提升整体服务性能与稳定性。
二、环境与准备
1、环境准备
操作系统 Ubuntu 13.3.0-6ubuntu2~24.04
2、下载地址 :wget -o https://nginx.org/download/nginx-1.24.0.tar.gz
3、官网地址: https://nginx.org
4、Nginx编译配置文档地址: https://nginx.org/en/docs/configure.html
三、安装过程
3.1 编译与安装
在官网下载nginx.tar 包通过 tar命令解压
sudo apt update
## 创建用户和用户组
sudo adduser --system --no-create-home --shell /bin/false --group --disabled-login nginx
sudo apt install -y build-essential libpcre3-dev zlib1g-dev libssl-dev
#配置 Nginx 编译选项,这里包含了一些常用模块
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-pcre \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_slice_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-stream_ssl_preread_module \
--with-threads \
--user=nginx \
--group=nginx
---------------------------------------------------------
## 进行编译 和安装
sudo make && make install
3.2 创建账号
建 Nginx 运行所需的目录并设置正确的权限
# 创建日志目录
sudo chown -R nginx:nginx /var/run/nginx.pid
sudo chown -R nginx:nginx /usr/local/nginx/
sudo mkdir -p /var/log/nginx
sudo chown -R nginx:nginx /var/log/nginx
# 创建缓存目录
sudo mkdir -p /var/cache/nginx
sudo chown -R nginx:nginx /var/cache/nginx
# 创建网站根目录
sudo mkdir -p /data/nginx/www/html
sudo chown -R nginx:nginx /data/nginx/www/html
3.3 创建系统服务
创建 systemd 服务文件以便管理 Nginx
sudo nano /etc/systemd/system/nginx.service
------------------------------------------------------
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
修改环境变量
## 后一行输入
echo 'export PATH=$PATH:/usr/local/nginx/sbin' >> ~/.bashrc
echo 'export PATH="/usr/sbin:$PATH"' >> ~/.bashrc
## 刷新配置文件
source ~/.bashrc
服务启动
sudo systemctl daemon-reload
sudo systemctl enable nginx
sudo systemctl start nginx
四、问题与解决
4.1 错误排查
## 查看系统日志中关于 Nginx 的详细错误信息
sudo journalctl -xe -u nginx.service
## 或者查看最近的日志
sudo journalctl -u nginx.service --since "2 minutes ago"
4.2 运行权限不足
Starting nginx.service - The NGINX HTTP and reverse proxy server...
Sep 08 08:00:03 nginx[1722]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Sep 08 08:00:03 nginx[1722]: nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
Sep 08 08:00:03 nginx[1722]: nginx: configuration file /etc/nginx/nginx.conf test failed
Sep 08 08:00:03 systemd[1]: **nginx.service: Control process exited, code=exited, status=1/FAILURE**
Sep 08 08:00:03 systemd[1]: **nginx.service: Failed with result 'exit-code'.**
Sep 08 08:00:03 systemd[1]: **Failed to start nginx.service - The NGINX HTTP and reverse proxy server.**
修改目录权限
sudo chown -R nginx:nginx /var/run/
4.3 Nginx端口启用安全限制
# 检查80端口是否被占用:
sudo netstat -tulpn | grep :80
# 如果没有被占用,那么我们需要给nginx可执行文件赋予绑定特权端口的权限:
sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/nginx
# 再次测试Nginx配置:
sudo nginx -t
# 如果测试通过,则启动Nginx:
sudo systemctl start nginx
参考资料
Nginx官网 nginx.org