摘要:所有的都不是完整的程序,所有未上線的程序都僅僅是個作為開發的后起之秀,在現在的國內環境下,雖比不上的火熱,沒有那么廣大的群眾基礎,蓋不過的高大上,但基于谷歌引擎的極速,異步與事件模型,無疑將是開發的重大革新我是一個小前端,自從知道,就覬覦其
所有的Demo都不是完整的程序,所有未上線的程序都僅僅是個Demo;
Nodejs作為Web開發的后起之秀,在現在的國內環境下,雖比不上PHP的火熱,沒有.net那么廣大的群眾基礎,蓋不過Java的高大上,但Nodejs基于谷歌V8引擎的極速,異步IO與事件模型,無疑將是Web開發的重大革新;我是一個小前端,自從知道Nodejs,就覬覦其好久,翹首以盼終于在業余用Express4.x斷斷續續做了一個個人博客;
為了讓我的博客不只是一個躺在本地的Demo,我買了個服務器,搭建好環境,選好日子,準備上線了,上線后就發現自己傻逼了……在目前的國內,Nodejs算是小眾的,最多是個比較有情調的,適合有閑情雅致的人去消遣;當然,問題不可避免,牢騷你也可以隨便,但既然選擇了,就要相信自己不是盲目的,當然還得堅定的走下去;在此和那些喜歡Nodejs,喜歡前端的小伙伴們分享一下關于上線后首先要解決的域名綁定問題;可能你搞過.net、PHP什么的,有IIS、一鍵建站的軟件,那么這些都無所謂,我只是站在一個小前端的視角,分享下基于Nodejs的建站問題;
現在已經非常流行Nginx反向代理的方式了,當我百度后最開始也是選擇了用Nginx來反向代理我的博客站點;我是個服務器小白,一開始真心傷不起啊,不過也沒什么可怕的,你只需要按照別人分享的模子,修改成你的就可以了,除非你想正兒八經的搞運維;當然不可避免的肯定會出現些未預知的小問題,比如:代理后客戶端的IP獲取問題(我那時獲取所有客戶的IP都是一樣的……),上傳文件的大小限制問題,都需要你再次重新配置相關的Nginx配置項;
基本配置方式如下:
命令行進入nginx.exe目錄 -> start nginx (啟動nginx) -> 打開conf目錄里的nginx.conf 文件 –> 新增一段upstream
upstream nodejs{ server 127.0.0.1:3000; //你的Express項目端口 # server 127.0.0.1:3001; keepalive 64; }
-> 在后面的server{}里引用這里定義好的nodejs
完整的片段如下:
server { listen 80; server_name www.famanoder.com famanoder.com; //請求到80端口的host location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_set_header Connection ""; proxy_pass http://nodejs; } } 重啟nginx:nginx –s reload或者nginx –c conf/nginx.conf
那么不出意外的話,你現在可以用域名訪問你的博客了;
Nodejs是強大的;
幾天后我知道了Nodejs的http-proxy模塊,就是用來創建代理服務器的;反正都是折騰,我毅然決然選擇了不用nginx,使用屬于Noders的http-proxy;并不是nginx不好用,只是個人選擇偏好問題;相信前端出身的Noders們也肯定會對自家的模塊更熱衷;
http.createServer()創建一個常規http服務器監聽80端口,通過http-proxy模塊proxy.createProxyServer()創建代理服務器,每次請求由proxy.web()方法來進行分發;
根目錄下新建一個proxy.js文件:
var proxy=require(‘http-proxy’).createProxyServer({}); proxy.on(function(err,req,res){ res.writeHead(500,{ ‘Content-Type’:’text/plain’ }); }); var server=require(‘http’).createServer(function(req,res){ var host= req.headers.host; switch(host){ case ‘www.famanoder.com’: proxy.web(req,res,{target:’http://localhost:3000’}); break; case "famanoder.com": proxy.web(req, res, { target: "http://localhost:4030" }); break; default: res.writeHead(200, { "Content-Type": "text/plain" }); res.end("Welcome to my server!"); } }); console.log("listening on port 80") server.listen(80);
是不是也很不錯啊,看起來就很爽,OK,接下來就是到app.js下去使用proxy模塊了;
加一句:require(‘./proxy’);就行了,到瀏覽器里看看是不是一樣實現了反向代理。
至此,Nodejs反向代理的兩種方式就都實現了,這不是Demo,你的程序真正在跑了;接下來就是要根據具體的其他業務,后續跟進和進一步探索了;
上個周末出去溜達時,看到一個大叔的后背上印著一行字:“要做就做大將軍!”,當時我就在心里為這位大叔點了一萬個贊,我本布衣,一介碼農,路漫漫其修遠兮,道阻且長,可是——我們正青春!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78236.html
摘要:感謝老師,老師的慕課網教程購買阿里云服務器及域名終端連接阿里云服務器環境輸入密碼購買時的密碼如果出現這個問題的解決方案解決方法查看硬盤掛在情況如果有數據盤的情況下查看硬盤使用情況通過設置快捷登錄權限,可以增加幾個擁有權限的用戶下查 感謝 Scott 老師,Scott老師的慕課網教程 https://coding.imooc.com/clas... 1. 購買阿里云服務器及域名 2. ...
摘要:感謝老師,老師的慕課網教程購買阿里云服務器及域名終端連接阿里云服務器環境輸入密碼購買時的密碼如果出現這個問題的解決方案解決方法查看硬盤掛在情況如果有數據盤的情況下查看硬盤使用情況通過設置快捷登錄權限,可以增加幾個擁有權限的用戶下查 感謝 Scott 老師,Scott老師的慕課網教程 https://coding.imooc.com/clas... 1. 購買阿里云服務器及域名 2. ...
摘要:其他事項需要開啟代理的拓展需要設置下位置在,下在下。經過我的測試,對自身的其他端口的代理和對的代理是正常工作的。 遇到問題 最近一直有個問題困惑著我,apache、nodejs、tomcat不能同時在服務器80端口運行,對域名進行設置時使用ip:port又不能得到期望的結果(結果一直是以一個iframe的形式),因此就在segmentFault上發問:同一臺服務器運行多個http服務如...
摘要:部署到線上卻發現,請求總是指向第一個二級域名,其他的二級域名訪問不到。后端配置了后端,不僅僅配置了二級域名,還配置了二級目錄,前端部署的服務也一樣需要二級目錄。 http-proxy http-proxy是一個nodejs的http代理庫,已經被webpack-dev-server集成進來,做代理使用。原因是在前后端分離大行其道的今天,我們如果需要在本地調后端api接口,不配置host...
摘要:需注意的是由于同源策略的限制,所讀取的為跨域請求接口所在域的,而非當前頁。目前,所有瀏覽器都支持該功能需要使用對象來支持,也已經成為主流的跨域解決方案。反向代理接口跨域跨域原理同源策略是瀏覽器的安全策略,不是協議的一部分。 什么是跨域? 跨域是指一個域下的文檔或腳本試圖去請求另一個域下的資源,這里跨域是廣義的。 廣義的跨域: 1.) 資源跳轉: A鏈接、重定向、表單提交 2.) 資源...
閱讀 2229·2019-08-30 10:51
閱讀 785·2019-08-30 10:50
閱讀 1463·2019-08-30 10:49
閱讀 3130·2019-08-26 13:55
閱讀 1591·2019-08-26 11:39
閱讀 3412·2019-08-26 11:34
閱讀 1937·2019-08-23 18:30
閱讀 3381·2019-08-23 18:22