Node搞定以后配置nginx, 安裝nginx很簡單
第一步,先安裝nginx存儲(chǔ)庫 =>> yum install epel-release
第二步,安裝nginx ?=> yum install nginx ,對(duì)提示回答yes
依舊,出現(xiàn)版本號(hào)說明安裝成功了
然而nginx最難得地方不是安裝, 是我不明白要怎么用.....在搗鼓了N久以后,我終于迷迷糊糊有些明白了.
安裝好node, nginx后,直接點(diǎn)擊應(yīng)用的網(wǎng)址 =>>http://test3demo.applinzi.com/ ,顯示502錯(cuò)誤, 官方說網(wǎng)址的默認(rèn)端口不是80,而是5050, 因此想通過這個(gè)網(wǎng)址訪問自己的應(yīng)用的話, 需要將自己的應(yīng)用啟動(dòng)端口改為5050.
一開始我天真的認(rèn)為,nginx既然是服務(wù)器代理, 那我要怎樣才能使我express框架搭建的后臺(tái)服務(wù)用上它呢. 在這個(gè)怪圈里我轉(zhuǎn)悠了很久. 在多方嘗試失敗,無奈放棄之后,半夜躺在床上我輾轉(zhuǎn)反側(cè),突然想通了.
nginx是服務(wù)器代理, 但是代理的是客戶端發(fā)過來的http請求, express作為后臺(tái)程序,屬于接收方. 那么用nginx的就應(yīng)該是前端代碼,也就是.html.js之類的文件, 想通這一點(diǎn)以后我一躍而起, 朝這個(gè)方向嘗試, 首先為了保險(xiǎn)起見, 我將vue打包之后的文件,上傳到nginx的文件夾下,也就是/usr/share/nginx/html下,刪掉原來的index.html,上傳我自己的index.html和static壓縮包,解壓.zip文件需要安裝unzip和zip,所以先執(zhí)行yum install zip unzip, 安裝成功之后cd到/usr/share/nginx/html文件夾下, 執(zhí)行unzip static.zip
解壓成功之后,確認(rèn)nginx中端口號(hào)已經(jīng)改為5050,這里server就是需要轉(zhuǎn)發(fā)的網(wǎng)址的意思,_代表當(dāng)前域名,也就是我的test3demo.applinzi.com. root 是nginx服務(wù)的運(yùn)行目錄, 也可以換成你想使用nginx代理的其他應(yīng)用文件夾.
執(zhí)行重啟nginx的命令=>nginx -s reload,之前重啟時(shí)都直接成功了,寫這博客的時(shí)候報(bào)了個(gè)沒見過的錯(cuò),也順便做個(gè)記錄
說是打開run/nginx.pid失敗, 我以為是路徑?jīng)]對(duì), 退回到根目錄執(zhí)行命令仍舊報(bào)著個(gè)錯(cuò),解決方案是先執(zhí)行nginx -c /etc/nginx/nginx.conf命令,再執(zhí)行重啟命令,這次成功了;
重啟成功后,我還特意去/run/nginx.pid看了一眼,只多了個(gè)260的內(nèi)容,不知道是什么意思.......
現(xiàn)在再打開http://test3demo.applinzi.com就能訪問我寫的前端項(xiàng)目了
接下來,是最后一步, 部署我的后端代碼. 我挑了個(gè)看的順眼的文件夾路徑,根目錄下的/home,上傳了我的后端server代碼包, 依舊是使用上傳zip然后解壓, 畢竟連接FilezZilla太麻煩了...
然后我們cd到server下,正常啟動(dòng)我們的后端服務(wù),我是用的express生成的項(xiàng)目,所以執(zhí)行node bin/www, 一般都是執(zhí)行node/index.js或者node/app.js.
這里提示我5050端口已經(jīng)被占用, 是因?yàn)?050端口已經(jīng)被nginx進(jìn)程占用了, 我們改一下自己的node服務(wù)啟動(dòng)的端口就行了. 改為4000或者其它未被占用的端口,重新啟動(dòng)node,此時(shí)已經(jīng)能正常啟動(dòng)了;
刷新網(wǎng)址,查看效果;
請求報(bào)404錯(cuò)誤, 這是因?yàn)?050端口向4000端口發(fā)出http請求,跨域了, 走到這一步已經(jīng)離勝利很接近了, 此時(shí)nginx代理轉(zhuǎn)發(fā)的作用可以發(fā)揮出來了. 還是/etc/nginx/nginx.conf這個(gè)文件,添加代理轉(zhuǎn)發(fā)的代碼:
此時(shí)就能正常發(fā)出跨域的http請求了:
這里需要注意兩點(diǎn):
1.? 127.0.0.1是本服務(wù)器的回環(huán)地址, 換成網(wǎng)址http://test3demo.applinzi.com:4000/的話,是無法訪問到這個(gè)端口的
2? 這里localtion匹配路由可以采用正則匹配和絕對(duì)路徑匹配,具體可以看這篇博客:
https://blog.csdn.net/mdjhzgj/article/details/78442422
整個(gè)過程再走一遍下來好像也沒有昨天那么難,但是永遠(yuǎn)不會(huì)有白走的冤枉路, 就是不停的摸索不停地踩坑,才能將知識(shí)點(diǎn)由點(diǎn)到面的聯(lián)系起來,然后深深地印在腦子里.-------來自一個(gè)稚嫩程序媛從泥坑里吶喊出的聲音~~