現(xiàn)有一已經(jīng)備案的域名,和在家庭電腦上的flask服務(wù)的網(wǎng)頁锻全,希望做到通過域名及https的方式訪問該網(wǎng)頁狂塘。
準(zhǔn)備通過nginx在云服務(wù)器上進行轉(zhuǎn)發(fā),用frp做內(nèi)網(wǎng)穿透虱痕,訪問本地網(wǎng)頁睹耐。
流程如下:
1.買一個云服務(wù)器,例如阿里云部翘。
這個云服務(wù)器需要有公網(wǎng)IP(即固定不變的IP硝训,才能和域名綁定)。
2.將域名解析到該公網(wǎng)IP新思。
3.進入云服務(wù)器窖梁,這里采用centos7系統(tǒng)。安裝tengine(即nginx的一個分支夹囚,具有nginx的功能)纵刘。
mkdir /usr/local/tengine:創(chuàng)建tengine文件夾
cd方法進入該文件夾
wget http://tengine.taobao.org/download/tengine-2.2.2.tar.gz:下載tengine
tar zxvf tengine-2.2.2.tar.gz:解壓tengine-2.2.2.tar.gz到tengine文件夾下
cd tengine-2.2.2
yum install gcc openssl-devel zlib-devel -y:安裝依賴文件
./configure --with-http_stub_status_module --with-http_ssl_module:編譯
make && make install:安裝(安裝時會自動創(chuàng)建/usr/local/nginx文件夾)
cd nginx/sbin:進入sbin文件夾
./nginx:啟動nginx
./nginx -t :測試nginx是否啟
lsof -i:80 :查看80端口是否開啟(yum install lsof安裝lsof),下圖表示正常監(jiān)聽
/usr/local/nginx/conf/nginx.conf或者 進入conf文件夾后sudo vi nginx.conf 打開配置文件
瀏覽器打開www.wingsfish.com出現(xiàn)tengine歡迎界面表示安裝成功
在/usr/local/nginx目錄中創(chuàng)建ssl文件夾荸哟。
注意:vultr(一種VPS代理假哎,如果不用可忽視)有防火墻問題瞬捕,需要將80端口添加讓防火墻通過,否則不能訪問舵抹。
防火墻部分可以參考:http://www.reibang.com/p/6ac0a9afa080
4.獲取ssl證書肪虎,方便用https訪問
獲取ssl證書有很多渠道,下面介紹兩種:
1)Let’s Encrypt
curl https://get.acme.sh | sh:下載安裝acme.sh
安裝后進入/root/.acme.sh目錄
./acme.sh --issue -d www.wingsfish.com --webroot /usr/local/nginx/html:生成證書(正常會有證書生成驗證成功提示惧蛹,證書生成在/root/.acme.sh/www.wingsfish.com目錄)
進入/root/.acme.sh目錄
./acme.sh --installcert -d www.wingsfish.com
--key-file /usr/local/nginx/ssl/www.wingsfish.com.key
--fullchain-file /usr/local/nginx/ssl/fullchain.cer
--reloadcmd "/usr/local/nginx/sbin/nginx -s reload"
進入/usr/local/nginx/conf/目錄扇救,編輯nginx.conf文件:
將https sever下邊的配置注釋解開(刪除前面的#號), ssl_certificate 這里配置fullchain.cer , ssl_certificate_key這里配置www.wingsfish.com.key香嗓,這倆文件都經(jīng)過上邊的命令被放在/usr/local/nginx/ssl目錄中迅腔,保存文件退出后,執(zhí)行命令
( /usr/local/nginx/sbin/nginx -t)靠娱,
沧烈,有這個顯示說明配置成功,再執(zhí)行命令(/usr/local/nginx/sbin/nginx -s reload)重新加載nginx配置文件后像云,在瀏覽器中輸入https://www.wingsfish.com掺出,如果出現(xiàn)歡迎界面表示配置成功,
加上此配置可配置強制使用https
注:如果不用https苫费,則做如下修改進行轉(zhuǎn)發(fā):
增加這一行即可。
增加完重新加載:/usr/local/nginx/sbin/nginx -s reload
2)阿里云賽門鐵克的ssl證書
在/nginx/conf/目錄下創(chuàng)建cert文件夾
從windows向linux傳輸文件:
下載putty里面的PSCP.EXE文件双抽,解壓
cmd方式進入PSCP.EXE所在文件夾百框,執(zhí)行以下指令:
進入nginx/conf打開nginx.conf文件,編輯如下:
5.frp內(nèi)網(wǎng)穿透
云服務(wù)器上操作如下:
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz:下載frp服務(wù)器端
tar zxvf frp_0.21.0_linux_amd64.tar.gz:解壓
sudo vi frps.ini:服務(wù)器編輯frps.ini這個文件牍汹,修改如下:
bind_port是frp通信端口铐维,vhost_http_port是frp所代理的端口,配置好保存文件退出慎菲,執(zhí)行命令(./frps -c ./frps.ini)可看到啟動日志嫁蛇。
家庭電腦去下載:https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_windows_amd64.zip,根據(jù)系統(tǒng)位數(shù)不同下載相應(yīng)的露该。
本地電腦編輯frpc.ini文件:
目前的配置睬棚,server_addr是服務(wù)器地址,server_port是frp通信端口(要和服務(wù)端一致)解幼,local_port是本地服務(wù)端口(要和服務(wù)端一致)抑党,custom_domains是需要代理的服務(wù)器地址,保存文件退出撵摆,在cmd進入frp目錄底靠,執(zhí)行frpc.exe,可看到啟動日志:
啟動正常的話可在服務(wù)端看到通信信息特铝,打開瀏覽器www.wingsfinsh.com:8080能看到界面
6.nginx轉(zhuǎn)發(fā)配置
服務(wù)器中打開nginx配置文件nginx.conf暑中,
添加proxy_pass 地址指向frp代理地址,注釋下邊兩行壹瘟,保存退出后,執(zhí)行
/usr/local/nginx/sbin/nginx -t 測試無誤后再執(zhí)行
/usr/local/nginx/sbin/nginx -s reload鳄逾,瀏覽器打開https://www.wingsfish.com配置成功稻轨。
7.linux可能用到的命令
cd 文件夾名:進入文件夾
cd .. :返回上級文件夾
mkdir 文件夾名 :創(chuàng)建文件夾
ls :查看文件夾下內(nèi)容
ps :查看當(dāng)前進程
kill -9 進程號 :殺死進程
rm -rf 文件夾名 :刪除文件夾(包含文件夾內(nèi)容)
frps 后臺執(zhí)行:
nohup ./frps -c ./frps.ini &
fg 切換到前臺
ctrl c 終止
ctrl z 切換回后臺掛起(停止)
bg % 進程號 后臺程序重新開始執(zhí)行
mv 目標(biāo)1 目錄2 :將目標(biāo)1移動到目錄2下,如果在同一個文件夾下严衬,則是重命名澄者。
8.可能的問題:
flask里用0.0.0.0:8080
云服務(wù)器有的服務(wù)商會限制端口,需要手工去打開以下端口:80,22,443,7000,8080
centos防火墻需要關(guān)閉或者開放上述端口请琳,注意centos6用的是iptable粱挡,而centos7用的是firewall