内网服务器经过openwrt端口转发后实现https加密
博主在家里的NAS上虚拟了一台debian,安装了web服务器,由于内网应用比较多,就做了一个内网导航页,这个导航页放在deiban里面,经过openwrt的端口可以任意访问,但是想加上ssl证书,折腾一番,成功,记录一下。
OpenWrt路由器:192.168.0.1,有公网IP,通过ddns连回家,有自己的域名。
debian服务器:192.168.0.3,安装了docker和web服务器,内网导航页index.html放在nginx默认目录下面。
上个内网导航页,自己手写的html,见笑。。。。。。
目的是要实现访问这个页面时,不管何时何地,走https加密,也就是说,在debian服务器里配置nginx的ssl证书,并且通过路由器转发端口后,仍然生效。
说干就干,其实很简单
server {
listen 443 ssl;
server_name 192.168.0.3;
access_log /var/log/nginx/localhost.access.log;
root /var/www/default;
index index.html index.htm index.php;
include /etc/nginx/fastcgi_php;
ssl_certificate /usr/local/etc/aaa.com.ssl/rui.crt;
ssl_certificate_key /usr/local/etc/aaa.com.ssl/rui.key;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets on;
}
server {
if ($host = 192.168.0.3) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name 192.168.0.3;
rewrite ^(.*) https://aaa.com:8084$1 permanent;
}
以上代码贴在debian的nginx配置里面,把aaa.com换成自己的域名,详细说明如下:
1,内网服务器debian的IP是192.168.0.3
2,在debian里配置好所有的ssl证书,域名那里写IP地址
3,在openwrt里做端口转发,外网8084,内网设置为192.168.0.3的443,也就是说,外面访问aaa.com:8084,openwrt会转发到192.168.0.3:443
4,第二个server里,设置如果访问的是80端口,就直接转发到目标地址,也就是最终的地址:https://aaa.com:8084
经过以上操作,在外网访问家里的地址,都是https加密的了。
下面就是内网导航的代码,复制后另存为index.html文件,放在web目录里即可。
