当前位置:首页 > Web开发 > 正文

跳转成为https://crv.futatsu.fun/abcabc

2024-03-31 Web开发

当不再满足使用域名+端标语访谒一台处事器上差别项目时,我决定研究下如何实现二级域名方法访谒。网上固然教程很多,但是我还是踩了不少坑,在此记录一下。

筹备事情

凭据官网的做法,安置EPEL等,有很多对象都是自带的,所以有可以跳过

yum -y install yum-utils yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional yum install certbot python2-certbot-nginx

或者更简单,直接执行docker命令

docker run -it --rm --name certbot -v "/etc/letsencrypt:/etc/letsencrypt" -v "/var/lib/letsencrypt:/var/lib/letsencrypt" certbot/certbot certonly -d *.futatsu.fun -d futatsu.fun --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory 生成证书挂载进nginx certbot certonly --standalone --email [email protected] -d *.futatsu.fun -d futatsu.fun

中间会要求你添加一条TXT记录在域名解析中,去添加。

主机记录 记录类型 线路类型 记录值
_acme-challenge   TXT   默认   (certbot生成)  

此时默认证书会生成在 ‘/etc/letsencrypt/live/你的域名/‘ 下,你可以选择从头挂载nginx把这个目录挂载进去,也可以手动cp,,保举从头挂载,这样将来更新证书时很便利。

设置二级域名

此刻我但愿把打点docker容器的portainer使用二级域名方法访谒,即直接访谒https://portainer.futatsu.fun,不需要访谒9000端口,以下是设置

server { listen 80; listen 443 ssl; server_name portainer.futatsu.fun; # old certs # ssl_certificate /cert/1_; # ssl_certificate_key /cert/2_; ssl_certificate /cert/fullchain.pem; ssl_certificate_key /cert/privkey.pem; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-Xss-Protection 1; location / { proxy_pass https://futatsu.fun:9000; } if ($scheme != "https") { return 301 https://$host$request_uri; } }

同时又但愿通过https://csv.futatsu.fun 访谒csv转json工具

只需再配一个server即可,很简单。

#csv server { listen 80; listen 443 ssl; server_name csv.futatsu.fun; ssl_certificate /cert/fullchain.pem; ssl_certificate_key /cert/privkey.pem; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-Xss-Protection 1; location / { root /usr/share/nginx/html/uploadcsv; index index.html index.htm; try_files $uri $uri/ /index.html; } if ($scheme != "https") { return 301 https://$host$request_uri; } } 踩坑点

在设置http跳转https时,我遇到了坑点,我访谒,跳转成为https://crv.futatsu.fun/abcabc,原因如下。

#设置跳转时,不应该判断是否访谒80端口,而应该判断是否scheme为https,否则会造成一次循环导致request_uri被添加两次。 #本来写法 if ($server_port = 80) { rewrite 301 https://$host$request_uri; } #此刻写法 if ($scheme != "https") { return 301 https://$host$request_uri; } 目前面临问题

因为我是在域名解析-主机记录中,直接添加泛解析*,导致目前未被拦截的请求城市解析到主页上去,好比a.futatsu.fun相当于直接访谒futatsu.fun。

解决方案1. 不适用泛解析,应该解析二级域名,这样其他直接没有解析即可,但是我不喜欢这样

接下来想做 访谒不存在的二级域名,跳转到404页面。

使用Certbot开启https并掩护所有二级域名-Nginx

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32083.html