1011 字
5 分钟
nginx安装及管理
前言
Nginx的设计目标之一是解决C10k问题,即同时连接数达到上万的情况下服务器的性能问题。通过采用异步事件驱动的架构,Nginx能够高效地处理大量并发连接,使得其在处理高流量的网络环境中表现出色。
本文使用源码编译方式安装nginx
- 定制化配置: 通过源码编译,您可以根据具体的需求和环境定制化配置Nginx。您可以选择编译所需的模块,启用或禁用特定功能,以及优化编译参数,以满足您的特定需求。
- 最新版本: 源码编译通常能够获得最新版本的Nginx,这意味着您可以享受到最新的功能、性能改进和安全补丁,而无需等待官方预编译包的发布。
- 优化性能: 通过源码编译,您可以根据服务器硬件和操作系统的特性进行优化,以获得更好的性能。您可以针对特定的硬件架构和操作系统版本进行优化,从而提高Nginx在您的环境中的性能表现。
- 学习机会: 通过阅读和编译Nginx的源代码,您可以更深入地了解其内部工作原理和架构设计。这不仅可以增强您对Nginx的理解,还可以为您今后解决问题提供更多的参考和思路。
- 灵活性和控制: 源码编译方式提供了更大的灵活性和控制权,您可以根据自己的需求进行调整和定制,而不受预编译包的限制。
Waiting for api.github.com...
安装依赖
更新软件包,安装需要依赖
build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
sudo apt-get update
sudo apt-get install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
下载源码到服务器/解压
Nginx历史版本
wget https://nginx.org/download/nginx-1.25.5.tar.gz
tar -zxvf nginx-1.25.5.tar.gz
进入目录
使用mv
命令重命名文件名方便后期管理
mv nginx-1.25.5 nginx
cd nginx
配置并编译 Nginx
/usr/local/nginx
指定安装目录,--with-http_ssl_module
启用 SSL/TLS 支持,用于 HTTPS,--with-http_v2_module
启用 HTTP/2 支持,提高网页加载速度
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module
编译并安装 Nginx
需要添加新模块则需要重新编译并安装 Nginx,操作前注意备份 Nginx 配置文件和现有的 Nginx 二进制文件
make
sudo make install
创建 systemd 服务文件
sudo vim /etc/systemd/system/nginx.service
注意安装目录
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
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 stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
创建 PID 文件目录并设置权限(如果需要)
sudo mkdir -p /var/run
sudo touch /var/run/nginx.pid
sudo chown -R www-data:www-data /var/run/nginx.pid
重新加载 Systemd 配置以使更改生效
sudo systemctl daemon-reload
启动 Nginx 服务
sudo start nginx
设置 Nginx 自启动
sudo systemctl enable nginx
查看 Nginx 状态
sudo systemctl status nginx
无法访问
查看防火墙,查看端口是否打开/占用
配置ssl证书、
下载好证书解压并上传到服务器
进入/usr/local/nginx/conf
目录,创建cert文件夹管理ssl文件
cd /usr/local/nginx/conf
mkdir cert
修改nginx.conf配置文件
vim /usr/local/nginx/conf/nginx.conf
server {
#HTTPS的默认访问端口443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
listen 443 ssl;
#填写证书绑定的域名
server_name <yourdomain>;
#填写证书文件绝对路径
ssl_certificate cert/<cert-file-name>.pem;
#填写证书私钥文件绝对路径
ssl_certificate_key cert/<cert-file-name>.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
#表示优先使用服务端加密套件。默认开启
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
重载nginx配置文件
nginx -t
可以查看配置文件位置和配置是否有报错
nginx -t
nginx -s reload