frp+nginx+子域名https
我们有很多设备大概率下是放在内网的,其内部有个web服务,可以在浏览器上访问,如果也是在同一个内网去访问的话,固然是可以直接访问的,但如果人在外面呢?
所以我们做了一个移动端的app,通过内网穿透(用的frp,服务器frps我们提供)来连接这些设备。
因为考虑到多设备,多客户,所以我们用的子域名来访问,这个子域名就是每台设备的“身份证ID”,绝对不会重复,只需在每台设备的frpc.ini配置一下即可。
现在准备在移动端启用https进行加密访问,我的做法是在frps的服务器里再加一层代理,用nginx来做,现在证书也弄好了,假设域名为example.com
。
我的思路是,移动端发送https请求到nginx,nginx收到以http发送给frps,剩下的就交给frps了。
但实际不是这么回事,我在浏览器访问https://2496.example.com
,它说不安全,我的nginx配置内容:
server {
server_name *.example.com; # managed by Certbot
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://$server_name$1:8080;
proxy_set_header Host $host;
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;
add_header X-Cache $upstream_cache_status;expires 12h;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
listen 80 ;
listen [::]:80 ;
server_name *.example.com;
return 301 https://$server_name$1;
}
我最近几天在开始接触nginx和frp,有很多不懂,希望有懂的各位朋友能指导一下,谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
letsencrypt
你没有配置泛域名,https
的是的example.com
主网站, 子域名访问的时候当然证书不对。点击游览器的锁图标查看那个域名的证书路径是否和你访问的是一样