Admin
发布于 2022-12-05 / 96 阅读 / 0 评论 / 0 点赞

Nginx安装并为Halo配置Https

1、Nginx组件安装

(1)安装pcre依赖

终端切换到`/usr/src`目录下:

[root@localhost ~]# cd /usr/src

联网下载pcre压缩文件依赖

[root@localhost src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz

解压压缩文件

[root@localhost src]# tar -xvf pcre-8.37.tar.gz

进入解压之后的文件,执行./configure

[root@localhost src]# cd pcre-8.37
[root@localhost pcre-8.37]# ./configure

注意:在执行./configure时需要系统安装gcc,否则会出错,此时需要安装gcc,如下:

[root@localhost pcre-8.37]# yum install gcc gcc-c++

再次执行./configure命令,如下:

[root@localhost pcre-8.37]# ./configure

编译并安装pcre

执行make && make install

[root@localhost pcre-8.37]# make && make install

查看pcre版本:

[root@localhost pcre-8.37]# pcre-config --version

至此,nginx的第一个依赖pcre就安装完成了。

(2)安装zlib及openssl依赖

通过yum方式安装,不再使用下载压缩包,编译安装的方式,且自动下载依赖。执行下面一条命令即可。

[root@localhost pcre-8.37]# yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

2、安装Nginx

通过wget方式下载nginx压缩文件包,如下:

[root@localhost src]# wget http://nginx.org/download/nginx-1.12.2.tar.gz

解压下载的nginx压缩包,如下:

[root@localhost src]# tar -xvf nginx-1.12.2.tar.gz 

进入到解压后的nginx目录中,执行./configure命令。

[root@localhost src]# cd nginx-1.12.2
[root@localhost nginx-1.12.2]# ./configure

如上检查完成之后执行编译,安装命令即可,如下:

[root@localhost nginx-1.12.2]# make && make install

至此,Nginx就安装完成了。安装成功之后,在 usr 目录中 多出来一个目录 local/nginx,在 nginx 目录下 有 sbin 目录,有启动脚本。如下:

[root@localhost nginx-1.12.2]# cd /usr/local/nginx

(3)测试Nginx

进入到 usr/local/nginx/sbin目录下,启动nginx,如下:

[root@localhost /]# cd /usr/local/nginx/sbin

启动nginx

root@localhost sbin]# ./nginx

(4)查看Nginx进程

启动nginx之后,查看nginx进程,如下:

查看nginx进程

[root@localhost sbin]# ps -ef | grep nginx

(5)访问Nginx

由于nginx中默认的端口是80端口,但是出于linux系统安全方面考虑,并未开放80端口,如果是云服务器,则需在安全组中放开80端口。

(6)配置文件设置

[root@localhost /]# cd /usr/local/nginx/conf

查看nginx中文本信息

[root@localhost conf]# cat nginx.conf

具体如何配置则根据需求来配置。

启动nginx的命令为 /usr/local/nginx/sbin/nginx

停止nginx的命令为 /usr/local/nginx/sbin/nginx -s stop

重启nginx的命令为 /usr/local/nginx/sbin/nginx -s reload

3、为Halo配置Https

配置站点使用 https,并且将 http至 https。

1、nginx的ssl模块安装

  • 查看nginx是否安装http_ssl_module模块

    $ /usr/local/nginx/sbin/nginx -V

    如果出现 configure arguments: --with-http_ssl_module, 则已安装(下面的步骤可以跳过,进入 nginx.conf 配置)。

  • 下载nginx安装包

    # 下载安装包到 src 目录
    $ cd /usr/local/src
    $ wget http://nginx.org/download/nginx-1.14.1.tar.gz
    ​
    # 解压安装包
    $ tar -zxvf nginx-1.14.1.tar.gz
    ​
    # 配置ssl模块
    $ cd nginx-1.14.1
    $ ./configure --prefix=/usr/local/nginx --with-http_ssl_module
  • 使用 make 命令编译(使用make install会重新安装nginx),此时当前目录会出现 objs 文件夹。

  • 用新的 nginx 文件覆盖当前的 nginx 文件。

$ cp ./objs/nginx /usr/local/nginx/sbin/
  • 再次查看安装的模块(configure arguments: --with-http_ssl_module说明ssl模块已安装)。

$ /usr/local/nginx/sbin/nginx -V

2、ssl证书部署

  • 下载申请好的 ssl 证书文件压缩包到本地并解压(需要用 pem 与 key 文件,文件名可以更改)。如何申请ssl证书有很多案例,这里不再介绍。

  • 在 nginx 目录新建 cert 文件夹用于存放证书文件。

  • 将这两个文件上传至服务器的 cert 目录里。

nginx.conf 配置

实现将http重定向到https。

http节点下的第一个server配置如下:

server {
        listen  80;
        listen [::]:80;
        # server_name  域名改成自己的
        server_name  www.cherishspring.cn cherishspring.cn;
        client_max_body_size 1024m;
        
        # 301重定向至 https
        return 301 https://$server_name$request_uri;
        
        #charset koi8-r;
​
        #access_log  logs/host.access.log  main;
​
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://halo;
            proxy_set_header HOST $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
​
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

https server 配置如下:

server {
       # ssl使用443端口,服务器端安全组也需要放开
       listen       443 ssl;
       # server_name 你的域名
       server_name  www.cherishspring.cn cherishspring.cn;
​
       # ssl_certificate      cert.pem;
       # ssl_certificate_key  cert.key;
       
       # 需要将test.com.pem替换成已上传的证书文件的名称。
       ssl_certificate      /usr/local/nginx/cert/www.cherishspring.cn.pem;
       # 需要将test.com.key替换已上传的证书密钥文件的名称
       ssl_certificate_key  /usr/local/nginx/cert/www.cherishspring.cn.key;
        
       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;
       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;
​
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://halo;
            proxy_set_header HOST $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

重启nginx

如果nginx已经在运行,需要关闭。

# 查看端口使用
$ netstat -lntp
​
# 结束 80 端口进程
$ kill PID号
​
# 重启Nginx
$ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

无提示信息即为配置成功。

示例:如本站

cherishspring.cn

www.cherishspring.cn


评论