Centos7下安装Nginx及配置SSL

news/2024/11/19 23:30:30/

文章目录

      • 1.官网下载Nginx
      • 2.安装依赖包
      • 3.安装Nginx
      • 4.启动Nginx
      • 5.防火墙放开端口
      • 6.Nginx的SSL模块安装
      • 7.SSL证书准备
      • 8.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-develyum install -y zlib zlib-develyum 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端口,开启ssllisten 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请求重定向到httpsrewrite ^(.*)$ 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;
}

http://www.ppmy.cn/news/5623.html

相关文章

Promise(三) promise自定义封装25-35

1.初始结构搭建 2.resolve和reject结构搭建 3.throw抛出异常改变状态 4.promise对象状态只能修改一次 5.then方法执行回调 6.指定多个回调的实现 7.同步修改状态then方法结果返回 8.异步修改状态then方法结果返回 9.then方法完善与优化 10.catch方法——异常穿透与值管…

HTML期末作业,基于html实现中国脸谱传统文化网站设计(5个页面)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

【浅学Linux】信号产生的4中方式

文章目录一:通过终端按键产生信号二:调用系统函数向进程发信号三:由软件条件产生信号四:硬件异常产生信号总结一:通过终端按键产生信号 比如用户输入命令,在Shell下启动一个前台进程。 用户按Ctrl C&…

leetcode 337 打家劫舍III

题目 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直…

【C++入门基础(上)】

Cross the stars over the moon to meet your better-self. 目录 1 命名空间 1.1 命名空间定义 1.2 命名空间使用 1.2.1 加命名空间名称及作用域限定符 1.2.2 使用using将命名空间中成员引入 1.2.3 使用using namespace 命名空间名称引入 2 C输入&&输出 3 缺省参数…

Redis集群的三种方式详解(附优缺点及原理区别)

Redis提供了三种集群方式,下面我重点详解Redis三种集群方式的原理及优缺点等区别mikechen 目录 Redis主从复制模式Redis哨兵模式Redis集群模式 Redis主从复制模式 1.Redis主从复制定义 主从模式是三种模式中最简单的,主从模式指的是使用一个Redis实例…

【Java枚举类与注解】——一篇文章读懂枚举类与注解

文章目录2.枚举2.1概述2.2定义格式2.3枚举的特点2.4枚举的方法3.注解3.1概述3.2自定义注解3.3 元注解2.枚举 2.1概述 为了间接的表示一些固定的值,Java就给我们提供了枚举,是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。 …

Spring事件处理

在实际业务开发中,有时候复杂性的业务之间需要解耦,常用的方法:同步、异步、MQ。但 MQ 重啊,非必要不提升架构复杂度。 针对同步和异步使用方式:1.定时器 2.Spring Event. Spring Event: 观察者…