(环境:阿里云Ubuntu22.04使用非root用户,文章安装包名称及版本为nginx-1.22.1.tar.gz)

Ubuntu环境通过编译源码方式安装Nginx

安装过程

1、前往Nginx官网下载最新Stable版本安装包,并放置用户目录下
2、创建文件夹: sudo mkdir /usr/local/nginx,并将安装包移动到安装目录:sudo mv nginx-1.22.1.tar.gz /usr/local/nginx
3、到nginx目录:cd /usr/local/nginx,解压nginx安装包sudo tar -zxvf nginx-1.22.1.tar.gz
4、安装nginx需要的依赖:
PCRE:sudo apt install libpcre3 libpcre3-dev
zlib:sudo apt install zlib1g-dev
OpenSSL:sudo apt install openssl libssl-dev
5、到解压好的nginx安装包目录:cd nginx-1.22.1,编译nginx并附带SSL功能:sudo ./configure --prefix=/usr/local/nginx --with-http_ssl_module
6、安装:sudo make&&sudo make install
7、检查:sudo /usr/local/nginx/sbin/nginx -v,显示nginx版本后即安装成功

可选项:添加到systemctl进行管理

1、编辑文件sudo vim /usr/lib/systemd/system/nginx.service,输入i进行编辑文件,添加以下内容:

[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

2、(如有)停止原先通过目录运行的Nginx:sudo /usr/local/nginx/sbin/nginx -s stop
3、通过systemctl运行:sudo systemctl start nginx

可选项:配置Nginx并阻止ip访问

1、到nginx目录:cd /usr/local/nginx/conf
2、编辑nginx配置文件sudo vim /usr/local/nginx/conf/nginx.conf,注释掉默认的server,并在http块中include conf.d/*.conf;
3、创建文件夹:sudo mkdir conf.d,并到此目录cd conf.d
4、写入新文件:sudo vim default.conf,并填入以下内容:

server {
listen 80 default;
listen [::]:80 default;
server_name _;
return 403;
}

5、重新载入配置文件:sudo systemctl reload nginx

可选项:配置SSL

1、到nginx配置目录:cd /usr/local/nginx/conf/conf.d

2、创建cert文件夹:sudo mkdir cert,并将证书公钥私钥放入此处

3、编辑配置文件:sudo vim yourconfig.conf,并插入下述内容

server {
listen 443 ssl;
listen [::]:443 ssl;
server_name yourdomain; #yourdomain替换你的域名
ssl_certificate conf.d/cert/yourkey.pem; #yourkey替换你的证书文件名
ssl_certificate_key conf.d/cert/yourkey.key; #yourkey替换你的证书文件名
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
ssl_prefer_server_ciphers on;
location / {
#输入你的配置内容
}
}

#强制HTTPS
server {
listen 80;
listen [::]:80;
server_name yourdomain; # yourdomain替换你的域名
rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
location / {
index index.html index.htm;
}
}

可能遇到的问题

1、./configure: error: C compiler cc is not found

方案:安装gcc:sudo apt install gcc即可,继续刚刚未完成的操作。

2、sudo: make: command not found

方案:安装make:sudo apt install make即可,继续刚刚未完成的操作。