Ylan|blog
1011 字
5 分钟
nginx安装及管理
2024-05-12

前言#

Nginx的设计目标之一是解决C10k问题,即同时连接数达到上万的情况下服务器的性能问题。通过采用异步事件驱动的架构,Nginx能够高效地处理大量并发连接,使得其在处理高流量的网络环境中表现出色。

本文使用源码编译方式安装nginx

  1. 定制化配置: 通过源码编译,您可以根据具体的需求和环境定制化配置Nginx。您可以选择编译所需的模块,启用或禁用特定功能,以及优化编译参数,以满足您的特定需求。
  2. 最新版本: 源码编译通常能够获得最新版本的Nginx,这意味着您可以享受到最新的功能、性能改进和安全补丁,而无需等待官方预编译包的发布。
  3. 优化性能: 通过源码编译,您可以根据服务器硬件和操作系统的特性进行优化,以获得更好的性能。您可以针对特定的硬件架构和操作系统版本进行优化,从而提高Nginx在您的环境中的性能表现。
  4. 学习机会: 通过阅读和编译Nginx的源代码,您可以更深入地了解其内部工作原理和架构设计。这不仅可以增强您对Nginx的理解,还可以为您今后解决问题提供更多的参考和思路。
  5. 灵活性和控制: 源码编译方式提供了更大的灵活性和控制权,您可以根据自己的需求进行调整和定制,而不受预编译包的限制。
nginx
/
nginx
Waiting for api.github.com...
00K
0K
0K
Waiting...

安装依赖#

更新软件包,安装需要依赖

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
nginx安装及管理
https://adunm.top/posts/nginx/nginx安装及管理/
作者
Ylan
发布于
2024-05-12
许可协议
CC BY-NC-SA 4.0