Centos7下安装Nginx及配置SSL

1.官网下载Nginx

​ 去官网下载需要的nginx压缩包,地址:http://nginx.org/en/download.html,此处下载最新稳定版nginx-1.22.1。
在这里插入图片描述

2.安装依赖包

​ 使用linux连接工具例Xshell连接登录到服务器,在centos7命令模式下输入需要安装的依赖包命令。

 yum install gcc-c++
 yum install -y pcre pcre-devel
 yum install -y zlib zlib-devel
 yum install -y openssl openssl-devel

​ 需要从服务器上传递、下载文件,还可以安装上文件传输依赖:

yum install lrzsz -y

​ 安装好后,可以使用rz命令调起本地上传文件到目标服务器的弹出框,把下载的nginx压缩包传到linux服务器上:
在这里插入图片描述
​ 使用sz+文件名,从linux服务器下载文件到本地:
在这里插入图片描述

3.安装Nginx

(1)解压nginx压缩包,输入解压命令:

tar -zxvf nginx-1.22.1.tar.gz

(2)把解压后的nginx文件移动到安装目录下,先进入到安装目录下:

cd /usr/local

​ 执行移动文件命令,把解压后nginx目录下的所有文件移动到当前目录下:

mv /home/zhanglizeng/nginx-1.22.1/ .

(3)进入到nginx目录下,编译和安装,先进入目录:

cd /usr/local/nginx-1.22.1

执行配置命令:

./configure

​ 执行编译命令:

make

​ 执行安装命令:

make install

​ 执行完上述命令后,会在nginx-1.22.1安装包的同目录下生成一个nginx目录:
在这里插入图片描述

4.启动Nginx

​ 进入到nginx启动目录下:

 cd /usr/local/nginx/sbin

第一次启动nginx执行命令:

 ./nginx

其他nginx命令(都在nginx/sbin目录下执行):

# 强制停止nginx命令
./nginx -s stop
# 优雅停止命令,等最后一次交互执行完毕再停止
./nginx -s quit
# 重启命令
./nginx -s reload
# 检查配置文件是否有问题
./nginx -t
# 查看nginx版本信息
./nginx -v
# 查看nginx详细版本信息
./nginx -V

5.防火墙放开端口

查看防火墙是否开启:

systemctl status firewalld

当状态为active(running)时,表示开启;为inactive(dead)时,表示关闭:
在这里插入图片描述
当防火墙为关闭时,执行开启防火墙命令:

systemctl start firewalld

把要对外开放的端口号添加到防火墙,例如放开nginx默认的80端口:

firewall-cmd --permanent --zone=public --add-port=80/tcp

需要重启防火墙,加入的端口才能生效,执行重启命令:

systemctl reload firewalld

输入命令查看当前防火墙放开的端口号集合:

firewall-cmd --list-ports

在这里插入图片描述
​ 此时通过ip+80默认端口即可访问到nginx,出现此默认页面,表示nginx安装成功:
在这里插入图片描述

6.Nginx的SSL模块安装

输入命令查看nginx是否已经安装了ssl模块,需要到nginx安装目录的sbin文件夹下执行:

./nginx -v

在这里插入图片描述
当configure arguments:包含–with-http_ssl_module时,说明已经安装,直接跳过此步骤,若是不包含则进行安装。

进入到源nginx安装包的目录下,注意是安装包,不是安装后的文件,即nginx-1.22.1目录下:

cd /usr/local/nginx-1.22.1

在这里插入图片描述
执行configure配置命令:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

然后执行编译命令:

make

执行完编译命令就行,此处不需要执行make install安装命令,否则nginx会重新安装。

执行完成后,会在nginx-1.22.1目录下生成一个目录objs:
在这里插入图片描述
此objs目录内包含一个可执行文件nginx:
在这里插入图片描述
把生成的objs目录内的nginx执行文件替代安装好的nginx执行文件,先停止当前运行的nginx服务,进入目录:

cd /usr/local/nginx/sbin

执行停止nginx命令:

./nginx -s stop

执行nginx执行文件的替代:

cp /usr/local/nginx-1.22.1/objs/nginx /usr/local/nginx/sbin

此时再查看ssl的包含情况,显示已包含:
在这里插入图片描述

7.SSL证书准备

​ SSL证书包含:证书文件.crt、私钥文件.key。证书是跟域名绑定的,在申请证书时需要提供绑定的域名。网上也有免费的证书申请,此处不在过多赘述。
在这里插入图片描述

8.Nginx配置SSL

​ 把证书、私钥文件上传到linux服务器上,在nginx的conf目录下创建一个ssl目录,存放这两个文件:
在这里插入图片描述
​ 配置nginx.conf文件,完整目录为/usr/local/nginx/conf/nginx.conf:

user  nobody;
worker_processes  4;

error_log  logs/error.log warn;
pid        logs/nginx.pid;
worker_rlimit_nofile 102400;

events {
    use epoll;
    worker_connections  102400;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    autoindex off;

    sendfile        on;
    tcp_nopush     on;

    fastcgi_buffers 32 8k;
    
    keepalive_timeout  120;
    tcp_nodelay on;

    # 上传大文件时,使用nginx代理服务,需要配置文件缓存区,去对应目录下创建上client_body_temp_path配置的目录
    client_body_buffer_size 10m;
    client_max_body_size 100m;
    client_body_temp_path temp/;
    proxy_connect_timeout 5;
    proxy_read_timeout 120;
    proxy_send_timeout 5;
    proxy_buffer_size 1024k;
    proxy_buffers 128 64k;
    proxy_busy_buffers_size 1024k;
    proxy_temp_file_write_size 1024k;
    proxy_ignore_client_abort on;

    proxy_redirect off;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;

    log_format main '$remote_addr - $upstream_addr [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for" $request_time $upstream_response_time "$upstream_cache_status"';

    proxy_hide_header "X-Frame-Options";

    # nginx反向代理的配置文件,使用引入文件的方式加入,这样便于扩展
    include vhosts/xxx-master.conf;
    include vhosts/xxx-gateway.conf;
    #gzip  on;
}

在conf目录下创建一个vhosts目录,存放需要引入的配置文件,目录/usr/local/nginx/conf/vhosts:
在这里插入图片描述
xxx-master.conf配置ssl证书相关信息:

server {
    #ssl默认访问443端口,开启ssl
    listen 443 ssl;
    charset UTF-8;
    #服务域名
    server_name api.xxx.cn;
    #ssl证书文件地址
    ssl_certificate /usr/local/nginx/conf/ssl/xxx_bundle.crt;
    #ssl私钥文件地址
    ssl_certificate_key /usr/local/nginx/conf/ssl/xxx.cn.key;
    ssl_session_cache shared:SSL:1m;
    #缓存有效期
    ssl_session_timeout 5m;
    #加密算法
    ssl_ciphers HIGH:!aNULL:!MD5;
    #使用服务器端的首选算法
    ssl_prefer_server_ciphers on;

    location / {
        #反向代理到的服务
        proxy_pass http://xxx-gateway;
        proxy_redirect     default;
        proxy_set_header   Host             $host:$server_port;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    listen       80;
    server_name  api.xxx.cn;
    # 把http请求重定向到https
    rewrite ^(.*)$ https://${server_name}$1 permanent;  
}

xxx-gateway.conf配置网关信息:

upstream xxx-gateway {
    server 10.xx.9.xx:1234;
	server 10.xx.10.xx:2345;
	server 10.xx.6.xx:5678;
}
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值