利用nginx與frp/ngrok實(shí)現(xiàn)內(nèi)網(wǎng)穿透,將網(wǎng)站架在自己家里或者公司內(nèi)部


title: 利用nginx與frp/ngrok實(shí)現(xiàn)內(nèi)網(wǎng)穿透,將網(wǎng)站架在自己家里或者公司內(nèi)部
date: 2019-04-17 13:27:43
categories: 架構(gòu)
author: mrzhou
tags:

  • nginx
  • web
  • frp
  • ngrok

利用nginx與frp/ngrok實(shí)現(xiàn)內(nèi)網(wǎng)穿透,將網(wǎng)站架在自己家里或者公司內(nèi)部

這個(gè)需求其實(shí)在天朝一直都是比較強(qiáng)烈的,對于一些小企業(yè),或者是個(gè)人,能夠把網(wǎng)站架在企業(yè)內(nèi)部,或者家里是非常方便的一件事情,但現(xiàn)在國內(nèi),如果沒有備案的域名往往是無法被解析到相應(yīng)的服務(wù)器的,但使用https卻不受影響?;谝陨显颍瑢⒎?wù)器架在自己家里或者公司內(nèi)部,就不受限制了。

frp還是ngrok?

就目前來看這兩個(gè)工具好像是使用最為廣泛的,ngrok需要自己編譯,也還算比較方便,但frp你可以直接下載編譯好的版本,并且linux/win的版本都已經(jīng)編譯好了,下載后就可以直接使用。所以這里直接以frp作為樣例。

為什么還要nginx?

內(nèi)網(wǎng)穿透,但無論如何還是需要一臺有固定IP的公網(wǎng)服務(wù)器。如果你購買或者租用了一臺公網(wǎng)服務(wù)器,其實(shí)不可能只用它來做中轉(zhuǎn),應(yīng)該還是會用它來架一些其他的服務(wù),如果我們直接在上面架frp或者ngrok來監(jiān)控80和443端口,感覺還是有點(diǎn)浪費(fèi)了。所以我們前端使用nginx來管理,后面可以將請求轉(zhuǎn)到相應(yīng)的服務(wù)端口即可,當(dāng)然frp/ngrok也就放到nginx的后面了,后面還可以有tomcat或者iis、apache等。

重點(diǎn)還是在nginx的配置

在下面的配置中,我在公網(wǎng)服務(wù)器上同樣架了tomcat,端口8080,但并沒有對外開放,只能使用127.0.0.1:8080進(jìn)行訪問,然后架了frps,端口開放為7000,同時(shí)這個(gè)7000也是frpc連接使用。將80端口的訪問轉(zhuǎn)向443,然后使用nginx反向代理,將443的請求以http協(xié)議轉(zhuǎn)發(fā)到frps,然后轉(zhuǎn)到內(nèi)網(wǎng)的的服務(wù)器上。由于nginx已經(jīng)配置了泛域名證書支持,所以所有的子站均顯示為安全網(wǎng)站 。

upstream tomcat9 {
    server 127.0.0.1:8080;
}

upstream frps {
    server 127.0.0.1:7000;
}
server {
    listen 80;
    server_name www.easex.cn;
    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;

        proxy_pass http://tomcat9/;
    }   
}
server {
    listen 80;
    server_name *.easex.cn;
    return 301 https://$http_host$request_uri;
}
server {
    listen 443 ssl http2;
    server_name *.easex.cn;
    
    ssl_certificate     cert/easex.cn/fullchina.cer;
    ssl_certificate_key cert/easex.cn/easex.cn.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSV1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_prefer_server_ciphers on;
    
    access_log logs/easex.cn_access.log;
    error_log  logs/easex.cn_error.log;
                
    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;

        proxy_pass http://frps/;
    }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容