问题描述:
准备工作
- 域名:a.test.com 和 .a.test.com,都已解析域名,且a.test.com通过lnmp建立站点,.a.test.com通过lngx创建站点,且均已创建ssl证书。
- 其中a.test.com作为frps的subdomain_host。
- 客户端frpc的各个站点在使用http方式可以正常访问。
- 客户端frpc应用均采用子域名形式。
- frps的vhost_http_port = 20000
情况描述:
因为谷歌浏览器现在默认会强制http转,且感觉每次都该设置很麻烦,因此想要通过https来访问frp服务。但是因为个人原因,无法在客户端上申请或放置证书,无法以插件形式走https。
昨天查了很久,发现https://zhuanlan.zhihu.com/p/...这篇文章,利用nginx来反代http协议转https。
于是打算效仿。
配置出来后,直接访问xx.a.test.com可以看到frps的服务界面,但是一旦加上端口:xx.a.test.com:20000后,便无法访问。
且frps的dashboard_port面板,在设置*.a.test.com站点lngx反代后,也无法访问a.test.com:19999……
这个问题从昨晚6点折腾到现在没解决,撑不住了,只好向大佬们求救。
(被自己的技术力气晕。)
个人猜测:
个人感觉问题的核心就是,如何把nginx的这一段配置,转化为lngx配置。
nginx配置:
server {
listen 80;
server_name *.frp.jiaomingchao.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name *.frp.demo.com;
ssl_certificate /root/.acme.sh/*.frp.demo.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/*.frp.demo.com/*.frp.demo.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8082;
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size 0;
proxy_redirect off;
proxy_read_timeout 240s;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
个人的lngx配置:
亲,看你应该是端口搞混了吧,lngx你是用的80端口,所以是不用加端口可以直接访问的,而不能用20000访问,20000是你后端的端口。