用nginx实现强制http服务使用https访问

很多应用部署采用HTTP,因安全问题需改用HTTPS,可借助Nginx实现。博客介绍了实现步骤,包括获取证书(有认证证书和自生成证书两种方式)、安装Nginx、配置Nginx(修改80和443端口配置),最后进行测试,看能否从HTTP自动跳转至HTTPS。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

很多应用的软件部署时采用的http,由于安全问题会被要求用https,所以在不影响已部署的服务的情况下,可以让nginx来帮助实现这个功能。

实现

获取一个证书

证书获取有两种办法:经过认证的证书以及自己生成的没被认证的证书,生产环境还是推荐使用第一种。

  1. 获取免费的认证证书

1)获取证书,首先需要一个域名,大家可以参考
https://blog.youkuaiyun.com/HW140701/article/details/85156494
以及
https://blog.youkuaiyun.com/HW140701/article/details/85176191
2)申请免费证书

https://blog.youkuaiyun.com/mybelief321/article/details/54429314

  1. 自己生成证书
    创建您自己的CA证书:
$ openssl req \
    -newkey rsa:4096 -nodes -sha256 -keyout ca.key \
    -x509 -days 365 -out ca.crt -subj '/C=CN/ST=PEK/L=Bei Jing/O=YUN/CN=CA'

生成证书签名请求:

$ openssl req \
    -newkey rsa:4096 -nodes -sha256 -keyout 域名.key \
    -out 域名.csr -subj '/C=CN/ST=PEK/L=Bei Jing/O=YUN/CN=域名'

使用 CA 证书及CA密钥 对证书签名请求进行签发,生成 x509证书

$ openssl x509 -req -days 365 -in 域名.csr -CA ca.crt \
	-CAkey ca.key -CAcreateserial  -out 域名.crt	

自此自签名证书生成完毕

安装nginx

1、安装nginx依赖环境包

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

2、官网下载nginx1.12.0压缩包

wget https://nginx.org/download/nginx-1.12.0.tar.gz

3、解压nginx

tar zxf nginx-1.12.0.tar.gz

4、进入解压目录

cd nginx-1.12.0

5、编译nginx

1)默认编译方式

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

注:以上–with-http_ssl_module这个模块是https的关键,必须安装!

6、安装nginx

make && make install

7、启动nginx

nginx的可执行文件在 /usr/local/nginx/sbin/目录里面

/usr/local/nginx/sbin/nginx

即可启动

/usr/local/nginx/sbin/nginx -s stop

可以停掉

/usr/local/nginx/sbin/nginx -s reload

当修改了配置文件,上面的命令可以重新加载配置文件

8 . 查看 nginx是否启动成功

在这里插入图片描述

注意下面红框的模块一定要存在,这是配置https的关键

配置nginx(https)

打开nginx的配置文件

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

需要修改server的80和443端口对应的配置
在这里插入图片描述

80的server的意思是:当收到客户端要访问 http://域名时(当然server_name也可以是域名+端口号),访问的是80端口,会强制将访问ip转换成https://域名。所以会跳转到 443的server的配置(https对应的端口是443),因为启用了ssl模块,所以会使用你所配置的两个证书和密钥文件进行验证,当成功后会执行下面的location的配置,跳转到location里面配置的网址,这个网址就是我们想给他加上https的网址。

重新reload以下nginx

/usr/local/nginx/sbin/nginx -s reload
测试

当完成以上配置及重启nginx后,可以在浏览器访问http://域名,看是否会自动跳转称https://域名

参考

https://blog.youkuaiyun.com/HW140701/article/details/85156494

https://blog.youkuaiyun.com/HW140701/article/details/85176191

https://blog.youkuaiyun.com/mybelief321/article/details/54429314

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值