nginx

因为该博客是通过nginx+hexo搭建的,所以打算再次记录一下nginx的学习过程中遇到的问题

首先 安装依赖 gcc 如果买的是云服务器一般来说都是有自带的

yum install gcc
#然后查看安装是否成功
gcc -v

image-20210403140312703

pcre、pcre-devel安装

pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。

yum install -y pcre pcre-devel

zlib安装

zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装

安装命令:

yum install -y zlib zlib-devel

安装openssl

openssl是web安全通信的基石

安装命令:

yum install -y openssl openssl-devel

下载nginx安装包

wget http://nginx.org/download/nginx-1.9.9.tar.gz  
#解压缩
tar -zxvf  nginx-1.9.9.tar.gz

切换到nginx解压缩的目录下

cd nginx-1.9.9.9
make 
make install

切换到/usr/local/nginx/conf

cd /usr/local/nginx/conf
vim nginx.conf

image-20210403143932174

此处需要与你运行用户相同否则会出现403 fforbidden

image-20210403144114192

ssl证书配置

server {
    #SSL 访问端口号为 443
    listen 443 ssl;
 #填写绑定证书的域名
    server_name junh.top;
 #证书文件名称
    ssl_certificate 1_junh.top_bundle.crt;
 #私钥文件名称
    ssl_certificate_key 2_junh.top.key;
    ssl_session_timeout 5m;
 #请按照以下协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
    #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
        root /root/public;
        index  index.html index.htm;
    }
}

还可以后面添加重定向,将默认的来自80端口的HTTP请求转到443端口的HTTPS请求

server {
listen 80;
#填写绑定证书的域名
server_name cloud.tencent.com; 
#把http的域名请求转成https
return 301 https://$host$request_uri; 
}

但是期间重修加载配置文件报错 nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:

用如下命令进行测试

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

输出

nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:41

可见,nginx缺少SSL模块支持。这是因为最开始编译的时候没有添加SSL模块这就麻烦了

查看最开始的编译参数

/usr/local/nginx/sbin/nginx` `-V
#输出
configure arguments:

可见,当时我编译nginx的时候,啥参数都没加

回到解压缩出来的目录下

./configure --prefix=/usr/local/nginx --with-http_ssl_module
make
make install

建议先把之前的配置文件备份在 make install