首页 > 系统相关 >记一次nginx配Https踏过的坑-单域名证书只能配置一个域名

记一次nginx配Https踏过的坑-单域名证书只能配置一个域名

时间:2022-12-02 22:40:08浏览次数:37  
标签:http 证书 server nginx 域名 proxy Https


域名申请下来之后是可以访问了,但是如果需要用到小程序上面的话,还是需要支持https调用的。但是想着这还不难嘛。直接上ssl证书就好了。

那么问题就来了,白嫖一时爽。。。。。。

想白嫖SSL证书,单域名证书不是白嫖一次就行了,如果有多个服务,就要白嫖多次了。

刚开始申请完证书之后,直接上了​​www.yuming.com​​然后就好了。

但是后面用到几个二级域名,也要支持https,刚开始我天真的以为一级域名的证书,应该也会支持二级域名的访问的。就这样上去就是一顿配置,结果gg。。。。。

Chrome浏览器直接就提示检测到​​abc.yuming.com​​​使用的是​​www.yuming.com​​的证书。。。。

这就很尴尬了,不好使了。。。。

然后我对着搜索引擎就是一顿搜,结果就是没有结果,改来改去还是不行。。。。。

然后突然同事提到一句,你看下证书是不是单域名的证书,如果是单域名的证书的话,应该是不支持二级域名的。这让我突然想到刚开始的错误提示,就是明显的告诉你,当前域名使用的是另一个域名的证书。而我刚开始是真的没有意识到这一点,导致折腾了一俩小时。。。

废话唠完了,那就直接上配置就好了:

我用的是阿里云的服务器,当然也是购(bai)买(piao)了阿里云的免费的证书。

首先申请域名的证书前,需要保证该域名需要能ping通,否则会审核失败。

那么怎么购买免费的证书呢?

登录阿里云控制台,在左侧菜单栏产品与服务那里,搜​​证书​​,然后直接进入SSL证书。

记一次nginx配Https踏过的坑-单域名证书只能配置一个域名_nginx


这里可以看到购买和申请的证书。

记一次nginx配Https踏过的坑-单域名证书只能配置一个域名_nginx_02


没有证书的,就可以点击购买证书了:白嫖党的福利,财大气粗的话,可以买多域名的,这样操作简单,一劳永逸。

记一次nginx配Https踏过的坑-单域名证书只能配置一个域名_Https_03


勾选服务协议,然后支付0元。

记一次nginx配Https踏过的坑-单域名证书只能配置一个域名_Https_04


记一次nginx配Https踏过的坑-单域名证书只能配置一个域名_nginx_05


可以看到有了一个未签发的证书,这时需要先申请,这就需要用到了域名了。

记一次nginx配Https踏过的坑-单域名证书只能配置一个域名_nginx_06


输入域名,申请人信息,下一步

记一次nginx配Https踏过的坑-单域名证书只能配置一个域名_Https_07


下一步有个验证,验证通过之后,提交审核就好了。等十几二十秒后刷新,就可以看到已经

记一次nginx配Https踏过的坑-单域名证书只能配置一个域名_配置文件_08


记一次nginx配Https踏过的坑-单域名证书只能配置一个域名_配置文件_09


最后下载就好了,我这里使用的是nginx,所以下载对应的就好了,如果是traefik的话,需要下载Apache的证书。解压之后,就会出现这两个玩意,那么直接上传到服务器上。

记一次nginx配Https踏过的坑-单域名证书只能配置一个域名_SSL_10


我这里上传到nginx安装目录下的cert文件夹下了,cert是新建的文件夹。

然后就是修改conf文件了。

修改前,可能是这样的:

upstream  pms{
server 127.0.0.1:50000 weight=1;
}

server {
listen 80;
server_name pms.yuming.com;

location / {
client_body_buffer_size 50m;
proxy_pass http://pms;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}

修改后:

server {
listen 80;
server_name pms.yuming.com;
#rewrite ^(.*)$ https://$host$1 permanent;

location / {
client_body_buffer_size 50m;
proxy_pass http://pms;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}

server {
listen 443 ssl;
server_name pms.yuming.com;

ssl_certificate "/alidata/server/cert/pms.yuming.com.pem";
ssl_certificate_key "/alidata/server/cert/pms.yuming.com.key";

location / {
proxy_pass http://pms;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_redirect default;
}
}

其实就是加了一个监听443的端口,server_name 仍然同80端口的server_name,可以看到上面80端口哪里注释掉一行​​rewrite​​,注释和不注释的区别就是,添加证书后是否 还支持http调用。

如果只允许https调用,就打开注释,这样http的请求就会直接转发到https上,也就是说不再支持http调用,如果使用http请求的话,服务端收到的请求将会丢失请求的body中的参数。

我还见到有将上面连个server写一块的,同时监听80端口和443端口,但是我没有尝试这种,其中用if判断请求

listen 80;
listen 443;

if($server_port !~ 443){
return 307 https://$server_name$request_uri;
}

接着就是重启测试nginx的配置文件是否正常了。

我这里使用的是自定义的配置文件:

/alidata/server/nginx-1.4.4/sbin/nginx -t -c /alidata/server/nginx/conf/nginx.conf

其中-t是测试,-c是启动。如果提示successful,则证明配置文件没问题。

如果正常,则重新加载配置文件即可。

/alidata/server/nginx-1.4.4/sbin/nginx -s reload -c /alidata/server/nginx/conf/nginx.conf

记一次nginx配Https踏过的坑-单域名证书只能配置一个域名_二级域名_11


标签:http,证书,server,nginx,域名,proxy,Https
From: https://blog.51cto.com/linmengmeng/5907631

相关文章

  • nginx反向代理websocket,ws转wss
    记录一下nginx规则location^~/echargenet-admin#本地代理目录{proxy_passhttp://127.0.0.1:8080/xxx;#websocket地址proxy_set_headerHost$host;#......
  • 记一次cenos7安装nginx
    安装依赖yum-yinstallgccgcc-c++makelibtoolzlibzlib-developensslopenssl-develpcrepcre-devel 下载Nginx安装包wget-chttps://nginx.or......
  • Nginx系列---【如何隐藏响应头中nginx的版本信息?】
    隐藏响应头中nginx的版本信息1.问题描述在生产环境中,如果让别人知道你的nginx版本号,刚好这个版本的nginx有漏洞,就容易被人利用这个漏洞攻击你的服务。  2.解决方案......
  • mac安装nginx
    homebrew安装Nginx推荐Mac电脑上内置homebrew工具安装。安装Nginx:brewinstallnginx卸载Nginx:brewuninstallnginxHomebrewHomebrew是一款MacOS平台下的......
  • nginx 命令
    Nginx在windows下常用命令:启动:直接点击Nginx目录下的nginx.exe或者cmd运行startnginx关闭nginx-sstop或者nginx-squitstop表示立即停止nginx,不保存相关信息q......
  • windos 2008 r2 安装nginx
    NGINX安装一、下载相关文件1、nginx地址:http://nginx.org/en/download.html  2、WindowsServiceWrapper地址:http://repo.jenkins-ci.org/releases/com/sun......
  • Winsw将jar-bat-nacos-seata-nginx等快捷部署为windows服务
    Winsw将jar-bat-nacos-seata-nginx等快捷部署为windows服务1.软件下载WinSW的github下载地址:https://github.com/winsw/winsw/releases本文以WinSWv2.11.0为例2.注意......
  • idea创建 spring boot 初始化,填入阿里云的初始化地址:https://start.aliyun.com/
    idea创建springboot初始化,填入阿里云的初始化地址:https://start.aliyun.com/     ......
  • Ingress的Http与Https代理
    环境准备准备service和pod为了后面的实验比较方便,创建如下图所示的模型创建tomcat-nginx.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deplo......
  • 企业邮箱和域名有什么关系呢?
    域名邮箱是以企业域名为后缀的电子邮件地址,有新员工入职公司一般都会给其注册名字@企业域名的邮箱账号。还可以让管理员根据不同等级设定邮件的权限,企业邮箱一般代表了公......