目录
一、安装前准备工作
为了编译Nginx源码,我们需要安装标准的GCC编译器,另外,Nginx的一些模块还需要依赖其他第三方库,通常有pcre库(支持rewrite模块)、zlib库(支持gzip模块)和openssl库(支持ssl模块)。
通过以下指令查看Linux服务器上是否已经安装pcre、zlib和openssl。
#查看是否安装了gcc编译器
gcc -v
#查看是否安装了openssl
rpm -qa openssl
#查看是否安装了zlib
rpm -qa zlib
#查看是否安装了
pcrerpm -qa pcre
如果没有安装,则通过以下指令进行安装。
#安装gcc、openssl、zlib、pcre
yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel
二、Nginx安装包下载
访问官网:https://nginx.org/
下载最新版本的安装包:nginx-1.25.4.tar.gz
三、安装Nginx
登录云服务器,将下载好的Nginx安装包压缩文件,通过Xftp工具,上传到/www/temp目录下。
切换到/www/temp目录下执行以下指令,将压缩包解压至/www目录下。
tar -zxvf nginx-1.25.4.tar.gz -C ../
解压完成后得到 nginx-1.25.4 目录。
切换到 nginx-1.25.4 目录下。
使用以下指令,运行configure脚本程序,通过--prefix=path 指定nginx的安装目录,一般存放于/usr/local下的nginx目录下。
./configure --prefix=/usr/local/nginx
指令执行完成后,nginx-1.25.4 目录下多出一个Makefile文件。
使用以下指令编译Nginx
源码。
make
编译完成后,使用以下指令安装Nginx。
make install
指令执行完成后,切换到nginx的安装目录/usr/local/nginx下。
在当前安装目录/usr/local/nginx下使用以下指令,启动、关闭、重启nginx服务。
#以指定配置文件启动nginx,-c 后是nginx配置文件所在路径
./sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#重启nginx
./sbin/nginx -s reload
#停止nginx
./sbin/nginx -s stop
#其他nginx相关的操作指令
#在启动服务器之前,我们可以通过如下指令来查看Nginx服务器配置文件是否有语法错误
./sbin/nginx -t
#通过如下指令可以查看Nginx服务器版本
./sbin/nginx -v
执行完nginx启动指令后,通过以下指令查看nginx是否启动成功,出现如下图所示,则说明nginx服务启动成功。
ps -ef|grep nginx
通过浏览器,地址输入服务器ip加端口,访问nginx服务,端口号为80,如下图所示。
四、免费SSL证书申请与下载
以阿里云为例,登录控制后台,进入数字证书管理服务/SSL证书/免费证书,点击创建证书。
在右侧跳出的弹窗中,填写自己申请的域名、联系方式等信息,填写完成后点击提交审核。
证书申请通过后,点击下载,服务类型选择Nginx,点击下载。
将下载好的安装包解压,得到下图格式为.key,.pem两个文件。
将以上的证书文件和私钥文件上传到Nginx服务器的证书目录 /usr/local/nginx/conf/cert下,如果没有cert这个目录,则需要使用以下指令手动创建下。
mkdir mkdir /usr/local/nginx/conf/cert
接着编辑Nginx配置文件nginx.conf,修改与证书相关的配置。
vim /usr/local/nginx/conf/nginx.conf
找到HTTPS server配置,把前面#删除,修改内容如下:
server {
#HTTPS的默认访问端口443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
listen 443 ssl;
#填写证书绑定的域名<yourdomain>
server_name <yourdomain>;
#填写证书文件名称<cert-file-name>
ssl_certificate cert/<cert-file-name>.pem;
#填写证书私钥文件名称<cert-file-name>
ssl_certificate_key cert/<cert-file-name>.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
#默认加密套件
ssl_ciphers HIGH:!aNULL:!MD5;
#自定义设置使用的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;
}
}
配置HTTP请求自动跳转HTTPS,配置完成后保存退出。
server {
listen 80;
#填写证书绑定的域名<yourdomain>
server_name <yourdomain>;
#将所有HTTP请求通过rewrite指令重定向到HTTPS。
rewrite ^(.*)$ https://$host$1;
location / {
index index.html index.htm;
}
}
使用以下指令检查nginx配置文件是否有语法错误。
#在启动服务器之前,我们可以通过如下指令来查看Nginx服务器配置文件是否有语法错误
./sbin/nginx -t
如果出现下图所示错误,这个错误表明Nginx在尝试使用SSL(安全套层)配置时发现系统中没有启用ngx_http_ssl_module模块。
解决办法:
1、查看nginx版本,可以看到configure arguments 没有任何关于SSL的配置(--with-http_ssl_module 标志)。
/usr/local/nginx/sbin/nginx -V
2、进入到前面步骤下载的nginx的源码安装包的目录下,注意不是/usr/local/nginx,是带有版本号的。
cd /www/nginx-1.25.4
使用以下命令进行编译和安装SSL模块。
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make install
安装完成后,再次查看nginx版本,出现如下图所示,则说明安装成功。
重启Nginx。
./sbin/nginx -s reload
通过浏览器,地址输入服务器ip加端口,访问nginx服务,端口号为80。如下图所示可以看到有锁了,说明证书安装成功。
五、结语
扫下方二维码关注或访问个人网站 https://www.xiaolin-code.com/,第一时间获取最新文章更新。