Vapor文檔學習卅九: DEPLOY - Nginx

Deploy With Nginx

Nginx是一個非潮剑快速深浮,便于測試,易于配置的HTTP服務器和代理服務器眠冈。 雖然Vapor支持使用或不使用TLS的HTTP請求飞苇,但在Nginx代理下可以提高性能,更加安全蜗顽、易用布卡。

注意: 我們推薦在Nginx服務器下部署我們的Vapor HTTP服務器。

Overview

HTTP代理服務器什么意思雇盖? 簡而言之忿等,代理就像是公共互聯網和你的HTTP服務器之間的中間人。 請求發(fā)到代理崔挖,然后代理再發(fā)送到Vapor贸街。

代理的一個重要特征就是它可以改變,甚至重定向請求狸相。 例如薛匪,代理可以要求客戶端使用TLS(https),限制請求速率脓鹃,甚至可以在不與你的Vapor應用程序通信的情況下提供公共文件逸尖。

Nginx.png

More Detail

用于接收HTTP請求的默認端口是80(對于HTTPS是443)。 當將Vapor服務器綁定到端口80時将谊,它將直接接收并響應到服務器的HTTP請求冷溶。 當添加像Nginx這樣的代理時,將Vapor綁定到內部端口尊浓,如端口8080逞频。

Note:大于1024的端口不需要sudo綁定。

Vapor綁定到除了80或443之外的端口時栋齿,外部互聯網將無法訪問苗胀。然后襟诸,將Nginx綁定到端口80,并為其配置請求路由到端口8080(或您選擇的任何端口)的Vapor服務器基协。
就是如此歌亲,如果Nginx配置正確,你會看到你的Vapor應用程序能夠響應端口80上的請求澜驮。Nginx隱形的代理著這些請求和響應陷揪。

Install Nginx

第一步是安裝Nginx。 Nginx的一個巨大優(yōu)勢就是社區(qū)資源和文檔非常多杂穷。 因此悍缠,我們不會在這里詳細介紹如何安裝Nginx,因為絕對有一個針對你的的操作系統(tǒng)的安裝教程耐量。

可參考的文檔舉例:

ATP

通過ATP安裝Nginx:

sudo apt-get update
sudo apt-get install nginx

在瀏覽器中訪問服務器的IP地址飞蚓,檢查Nginx是否正確安裝:

http://server_domain_name_or_IP

Service

啟動或停止服務器:

sudo service nginx stop
sudo service nginx start
sudo service nginx restart

Booting Vapor

Nginx可以使用sudo service nginx ...啟動或停止。 你也可以使用類似的指令啟動和停止你的Vapor服務器廊蜒。

有很多方法可以做到這一點趴拧,這取決于你要部署的平臺。 查看Supervisor文檔的說明山叮,添加啟動和停止Vapor應用程序的命令著榴。

Configure Proxy

/etc/nginx/sites-enabled/中可以找到啟用站點的配置文件。
從創(chuàng)建一個新文件或者復制/etc/nginx/sites-available/的示例模板開始聘芜。
下面Home目錄下名為Hello的配置文件示例:

server {
    server_name hello.com;
    listen 80;

    root /home/vapor/Hello/Public/;

    location @proxy {
        proxy_pass http://127.0.0.1:8080;
        proxy_pass_header Server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass_header Server;
        proxy_connect_timeout 3s;
        proxy_read_timeout 10s;
    }
}

這個例子是假設在生產環(huán)境下啟動時兄渺,Hello項目綁定到了8080端口。

Serving Files

Nginx也可以提供公共配置文件汰现,而不用在Vapor應用程序中配置挂谍。 這可以通過在負載較大時為其他任務釋放Vapor程序來提高性能。

server {
    ...

    # Serve all public/static files via nginx and then fallback to Vapor for the rest
    try_files $uri @proxy;

    location @proxy {
        ...
    }
}

TLS

只要生成了正確的證書瞎饲,添加TLS就非常簡單口叙。想要生成免費的TLS證書趟济,可以查看Let's Encrypt贞言。

server {
    ...

    listen 443 ssl;

    ssl_certificate /etc/letsencrypt/live/hello.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/hello.com/privkey.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_stapling on;
    ssl_stapling_verify on;
    add_header Strict-Transport-Security max-age=15768000;

    ...

    location @proxy {
       ...
    }
}

上面的配置是使用Nginx的TLS相對嚴謹的設置。 有一些設置不是必需的绳矩,但可以提高安全性驮捍。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末疟呐,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子东且,更是在濱河造成了極大的恐慌启具,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件珊泳,死亡現場離奇詭異鲁冯,居然都是意外死亡拷沸,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門薯演,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撞芍,“玉大人,你說我怎么就攤上這事跨扮⌒蛭蓿” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵衡创,是天一觀的道長愉镰。 經常有香客問我,道長钧汹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任录择,我火速辦了婚禮拔莱,結果婚禮上,老公的妹妹穿的比我還像新娘隘竭。我一直安慰自己塘秦,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布动看。 她就那樣靜靜地躺著尊剔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菱皆。 梳的紋絲不亂的頭發(fā)上须误,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音仇轻,去河邊找鬼京痢。 笑死,一個胖子當著我的面吹牛篷店,可吹牛的內容都是我干的祭椰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼疲陕,長吁一口氣:“原來是場噩夢啊……” “哼方淤!你這毒婦竟也來了?” 一聲冷哼從身側響起蹄殃,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤携茂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后窃爷,有當地人在樹林里發(fā)現了一具尸體邑蒋,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡姓蜂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了医吊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钱慢。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖卿堂,靈堂內的尸體忽然破棺而出束莫,到底是詐尸還是另有隱情,我是刑警寧澤草描,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布览绿,位于F島的核電站,受9級特大地震影響穗慕,放射性物質發(fā)生泄漏饿敲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一逛绵、第九天 我趴在偏房一處隱蔽的房頂上張望怀各。 院中可真熱鬧,春花似錦术浪、人聲如沸瓢对。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽硕蛹。三九已至,卻和暖如春硕并,著一層夾襖步出監(jiān)牢的瞬間法焰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工鲤孵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留壶栋,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓普监,卻偏偏與公主長得像贵试,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子凯正,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容