nginx + frp实现https加密

围巾🧣 2020年03月18日 345次浏览

简介

主要是为了通信更加安全,地址栏有把帅气的小锁😜😜。

  • frp:快速反向代理,帮助您向internet公开NAT或防火墙后面的本地服务器。
  • NGINX:NGINX是一个免费的,开源的高性能HTTP服务器和反向代理,以及IMAP / POP3代理服务器。NGINX以其高性能,稳定性,丰富的功能集,简单的配置和低资源消耗而闻名。

就是实现内网穿透后给网站加个🔒。

思路🤔

工作思路,用户到外网服务器是走HTTPS,外网服务器到内网服务器是走HTTP,因为外网服务器到内网服务器没有暴露,所以安全性没什么问题。

配置代码

外网服务器端:

NGINX:80和443在同一个server

server{
        listen 80;
        listen 443 ssl http2;
        server_name blog.xlxs.top;

        location / {
                proxy_pass http://127.0.0.1:7001;
                proxy_set_header    Host            $host:80;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;

        }


    ssl_certificate /etc/letsencrypt/live/blog.xlxs.top/fullchain.pem; # 这里四行由let's encrypt自动生成
    ssl_certificate_key /etc/letsencrypt/live/blog.xlxs.top/privkey.pem; 
    include /etc/letsencrypt/options-ssl-nginx.conf; 
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 

}

FRP:

[common]
bind_port = 1234
vhost_http_port = 7001
subdomail_host = blog.xlxs.top

内网服务器端:

NGINX:

server {
        listen 80;
        server_name blog.xlxs.top;

        location / {
            proxy_pass http://127.0.0.1:8080;
        }

}

FRP:(因为两个服务器不暴露,用http,https要有正确的crt和key,不然502)

[common]
server_addr = xxx.xxx.xxx.xxx
server_port = 1234

[http]
type = http
local_port = 80
custom_domains = blog.xlxs.top