上一篇文章(http://www.cnblogs.com/chenxizhang/p/4684260.html),我作了一個實驗,就是利用Visual Studio,基於Nancy框架,開發了一個自託管(Self-hosting)的應用程序,而後將其部署到了一臺Ubuntu的虛擬機上面,經過mono將其順利地運行了起來,這樣也就實現了.NET應用程序在Liunx系統上面的移植。css
這一篇要講解的是進一步的實驗,咱們都知道Nginx這款服務器,它能夠用來作反向代理服務器,也能夠作負載均衡。html
關於nginx(要讀成 engine x),有興趣的朋友能夠多看一下官方網站:http://nginx.org/ nginx
首先,須要安裝nginx緩存
sudo apt-get install nginx
而後,須要對Nginx進行配置
cd /etc/nginx/sites-available/
這個目錄下面默認會有一個default的配置文件,內容以下
它是在80端口進行監聽。你能夠直接修改這個文件,例如我上圖中其實已經設置了將全部請求轉發(proxy_pass)到以前咱們啓動的那個網站(8888端口)。
咱們也能夠本身建立一個獨立的配置文件,另外指定一個端口
cat > nancydemo服務器
而後輸入以下的內容負載均衡
server {
listen 81;
server_name yourdomainname.com;
root /var/www/nancydemo;框架
location /Content/ {
alias /var/www/nancydemo/Content/;
location ~* \.(jpg|jpeg|png|gif|ico|css|js|ttf)$ {
expires 365d;
}
}dom
location / {
proxy_pass http://127.0.0.1:8888;
}
}
性能
按下CTRL +D保存這個文件,而後從新加載一下配置信息,就能夠在81端口訪問到原先8888端口的內容了測試
sudo /etc/init.d/nginx reload
有童鞋可能會問了,爲何要這麼麻煩呢?用戶直接訪問8888端口不就行了嗎?經過訪問81而後再訪問8888端口,這樣會不會有性能降低呢?
其實呢,這個問題的關鍵在於你要理解什麼叫反向代理。反向代理一方面隱藏了真正的服務器信息(例如地址),另外,還可能帶來更加快的訪問速度。
nginx不單單能夠做爲反向代理服務器,並且也是一款很出色的負載均衡服務器。爲了作這個實驗,我在服務器端分別用以前寫好的程序,啓動了兩個網站,端口分別爲8888和9999。
接下來介紹一下,如何配置nginx使其能夠實現負載均衡。方法很簡單,咱們須要編輯nancydemo這個配置文件(請注意紅色標出的部分)
upstream xizhang{
server 127.0.0.1:8888;
server 127.0.0.1:9999;
}
server {
listen 81;
server_name yourdomainname.com;
root /var/www/nancydemo;
location /Content/ {
alias /var/www/nancydemo/Content/;
location ~* \.(jpg|jpeg|png|gif|ico|css|js|ttf)$ {
expires 365d;
}
}
location / {
proxy_pass http://xizhang;
}
}
配置完成以後,咱們須要從新加載一下配置信息
sudo /etc/init.d/nginx reload
測試結果代表每秒請求數明顯上升
咱們能夠在服務器中看到有兩個nginx進程,以及mono的進程。
關於使用nginx實現負載均衡,還有一些細節,有興趣能夠參考 http://nginx.org/en/docs/http/load_balancing.html
nginx還能夠做爲靜態資源服務器,實現動靜分離(而且能夠緩存起來),進一步提升Web服務器的性能和吞吐量。這個話題就不過多展開了,有興趣的朋友們能夠參考官方的文檔