Vapor 2.0 - 使用Nginx進行部署(Deploying with Nginx)

前往 Vapor 2.0 - 文檔目錄

Nginx是一個非初锝快速陌知,經(jīng)過測試京闰,易于配置的HTTP服務器和代理颜及。雖然Vapor支持使用或不使用TLS直接提供HTTP請求,但是Nginx后面的代理可以提供更高的性能蹂楣,安全性和易用性俏站。

注意
我們建議代理Nginx后面的Vapor HTTP服務器。

概述(Overview)

代理HTTP服務器意味著什么痊土?簡而言之肄扎,代理人作為公共互聯(lián)網(wǎng)和HTTP服務器之間的中間人。請求到代理施戴,然后發(fā)送到Vapor反浓。

這個中間人代理的一個重要特征是它可以改變甚至重定向請求。例如赞哗,代理可以要求客戶端使用TLS(https)雷则,速率限制請求,甚至可以在不與您的Vapor應用程序通信的情況下提供公共文件肪笋。

更多細節(jié)(More Detail)

用于接收HTTP請求的默認端口是80端口(HTTPS是443端口)月劈。當您將Vapor服務器綁定到80端口時度迂,它將直接接收并響應到您的服務器的HTTP請求。當添加像Nginx這樣的代理程序時猜揪,可以將Vapor綁定到內(nèi)部端口惭墓,如8080端口。

注意
大于1024的端口不需要sudo綁定而姐。

當Vapor綁定到80端口或443端口時腊凶,外部互聯(lián)網(wǎng)不可訪問。然后拴念,您將Nginx綁定到80端口钧萍,并將其配置為將請求路徑到8080端口(或您選擇的任何端口)上綁定的Vapor服務器。

就是這樣 政鼠。如果Nginx配置正確风瘦,您會看到您的Vapor應用程序響應80端口上的請求。Nginx在不可見的情況下代理請求和響應公般。

安裝Nginx(Install Nginx)

第一步是安裝Nginx万搔。Nginx的一個重要部分是圍繞它的大量社區(qū)資源和文檔。因此官帘,我們不會在這里詳細介紹Nginx瞬雹,因為幾乎肯定會有一個專門的平臺、操作系統(tǒng)和提供程序的教程刽虹。

教程:

APT

Nginx可以通過APT安裝挖炬。

sudo apt-get update
sudo apt-get install nginx

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

http://server_domain_name_or_IP

服務(Server)

該服務可以啟動或停止状婶。

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

引導蒸氣(Booting Vapor)

Nginx可以用sudo service nginx ...命令啟動一個停止。您將需要類似啟動和停止您的Vapor服務器的東西馅巷。

有很多方法可以做到這一點膛虫,它們?nèi)Q于您要部署的平臺。查看管理員說明钓猬,添加啟動和停止Vapor應用程序的命令稍刀。

配置代理(Configure Proxy)

/etc/nginx/sites-enabled/里可以找到啟用的站點的配置文件。

創(chuàng)建一個新的文件或復制示例模板從/etc/nginx/sites-available/開始敞曹。

下面是一個示例配置文件账月,用于在主目錄中名為Hello的Vapor項目。

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;
    }
}

這個配置文件假設Hello項目在生產(chǎn)模式下啟動時綁定到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相對簡單,只要證書已經(jīng)被正確地生成的抓歼。免費生成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的相對嚴格的設置。這里的一些設置不是必需的谣妻,但增強安全性萄喳。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蹋半,隨后出現(xiàn)的幾起案子他巨,更是在濱河造成了極大的恐慌,老刑警劉巖减江,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件染突,死亡現(xiàn)場離奇詭異,居然都是意外死亡您市,警方通過查閱死者的電腦和手機觉痛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茵休,“玉大人薪棒,你說我怎么就攤上這事¢泡海” “怎么了俐芯?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钉鸯。 經(jīng)常有香客問我吧史,道長,這世上最難降的妖魔是什么唠雕? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任贸营,我火速辦了婚禮,結果婚禮上岩睁,老公的妹妹穿的比我還像新娘钞脂。我一直安慰自己,他們只是感情好捕儒,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布冰啃。 她就那樣靜靜地躺著,像睡著了一般刘莹。 火紅的嫁衣襯著肌膚如雪阎毅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天点弯,我揣著相機與錄音扇调,去河邊找鬼。 笑死抢肛,一個胖子當著我的面吹牛肃拜,可吹牛的內(nèi)容都是我干的痴腌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼燃领,長吁一口氣:“原來是場噩夢啊……” “哼士聪!你這毒婦竟也來了?” 一聲冷哼從身側響起猛蔽,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剥悟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后曼库,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體区岗,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年毁枯,在試婚紗的時候發(fā)現(xiàn)自己被綠了慈缔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡种玛,死狀恐怖藐鹤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赂韵,我是刑警寧澤娱节,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站祭示,受9級特大地震影響肄满,放射性物質發(fā)生泄漏。R本人自食惡果不足惜质涛,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一稠歉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汇陆,春花似錦轧抗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纠炮。三九已至月趟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恢口,已是汗流浹背孝宗。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留耕肩,地道東北人因妇。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓问潭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親婚被。 傳聞我的和親對象是個殘疾皇子狡忙,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容