成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[譯] 如何在Ubuntu 16.04上部署支持HTTP / 2的Nginx

TalkingData / 3495人閱讀

摘要:本教程將幫助您部署一個(gè)支持的快速,安全的服務(wù)器。該變量告訴對(duì)支持協(xié)議的瀏覽器啟用。默認(rèn)情況下,設(shè)置為下劃線,這意味著配置文件負(fù)責(zé)所有傳入的請(qǐng)求。這個(gè)頭部還能保護(hù)我們免受協(xié)議降級(jí)攻擊。

原文:How To Set Up Nginx with HTTP/2 Support on Ubuntu 16.04 | DigitalOcean
作者:Sergey Zhukaev


介紹

NGINX 是一個(gè)快速可靠的開源Web服務(wù)器。由于其內(nèi)存占用空間小,可擴(kuò)展性高,易于配置,并支持絕大多數(shù)協(xié)議,因此受到歡迎。
本教程將幫助您部署一個(gè)支持HTTP / 2 的快速,安全的 Nginx 服務(wù)器。

前提

在開始之前,我們需要幾件事情:

Ubuntu 16.04 Droplet

具有sudo權(quán)限的非root用戶(有關(guān)詳細(xì)信息,請(qǐng)查看Ubuntu 16.04初始服務(wù)器設(shè)置。)

完全注冊(cè)域名 您可以在 Namecheap
上購買一張或在 Freenom 上免費(fèi)獲得一張。

確保您的域名配置為指向您的Droplet。如果需要幫助,請(qǐng)參閱本教程。

SSL證書。生成自簽名證書,從“我們加密”獲取一個(gè)免費(fèi)的證書,或從另一個(gè)提供商處購買一個(gè)。
就這些。如果您有上面列出的所有內(nèi)容,您隨時(shí)可以去。

HTTP 1.1和HTTP / 2之間的區(qū)別

HTTP / 2 是超文本傳輸??協(xié)議的新版本,在 Web 上用于從服務(wù)器到瀏覽器傳送頁面。HTTP / 2 是近二十年來 HTTP 的第一個(gè)主要更新:HTTP1.1在1999年被引入公眾,當(dāng)時(shí)網(wǎng)頁一般是一個(gè)帶有內(nèi)聯(lián)CSS樣式表的HTML文件?;ヂ?lián)網(wǎng)自那以后發(fā)生了巨大的變化,現(xiàn)在我們面臨著HTTP 1.1的局限性——該協(xié)議限制了大多數(shù)現(xiàn)代網(wǎng)站的潛在傳輸速度,因?yàn)樗螺d頁面的過程是一個(gè)隊(duì)列(下一部分開始下載前,前一部分必須下載完),一般現(xiàn)代網(wǎng)頁需要大約100個(gè)請(qǐng)求下載(每個(gè)請(qǐng)求都是圖片,js文件,css文件等等)。

HTTP / 2解決了這個(gè)問題,因?yàn)樗鼛砹艘恍└拘缘淖兓?/p>

所有請(qǐng)求都是并行下載的,而不是在隊(duì)列中

HTTP頭部被壓縮

頁面作為二進(jìn)制文件傳輸,而不是作為文本文件,這更高效

即使沒有用戶的請(qǐng)求,服務(wù)器也可以“推送”數(shù)據(jù),這樣可以提高延遲較高用戶的速度

盡管HTTP / 2不需要加密,但兩款最受歡迎的瀏覽器(Chrome瀏覽器和Mozilla Firefox)的開發(fā)人員表示,為了安全起見,他們將僅為HTTPS 連接提供HTTP / 2支持。因此,如果您決定在服務(wù)器支持HTTP / 2,則必須使用HTTPS。

步驟1 - 安裝最新版本的Nginx

在Nginx 1.9.5中加入了HTTP / 2協(xié)議的支持。幸運(yùn)的是,Ubuntu 16.04中的默認(rèn)鏡像源包含的nginx版本高于此版本,因此我們不必添加第三方鏡像源。
首先,在apt包系統(tǒng)中更新可用包的列表:

$ sudo apt-get update

然后,安裝Nginx:

$ sudo apt-get install nginx

安裝過程完成后,您可以鍵入以下內(nèi)容檢查Nginx的版本:

$ sudo nginx -v

輸出應(yīng)類似于以下內(nèi)容:

// sudo nginx -v 輸出結(jié)果
nginx version: nginx/1.10.0 (Ubuntu)

在接下來的幾個(gè)步驟中,我們將修改Nginx配置文件。每個(gè)步驟都將更改Nginx配置選項(xiàng)。我們將一路測(cè)試配置文件的語法。最后,我們將驗(yàn)證Nginx是否支持HTTP / 2,并進(jìn)行一些更改以優(yōu)化性能。

步驟2 - 更改收聽端口并啟用HTTP / 2

我們的第一個(gè)更改是將監(jiān)聽端口80改為443。

打開配置文件:

$ sudo nano /etc/nginx/sites-available/default

默認(rèn)情況下,Nginx設(shè)置為監(jiān)聽80端口,這是標(biāo)準(zhǔn)的HTTP端口:

// 在/etc/nginx/sites-available/default中
listen 80 default_server;
listen [::]:80 default_server;

你可以看到,我們有兩個(gè)不同的listen變量。第一個(gè)是用于所有IPv4連接。第二個(gè)是用于IPv6連接。我們將為兩者啟用加密。

修改監(jiān)聽端口為HTTPS協(xié)議使用的443:

// 在/etc/nginx/sites-available/default中
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;

注意,除 ssl 之外,我們還加入 http2 。該變量告訴Nginx對(duì)支持HTTP2協(xié)議的瀏覽器啟用HTTP / 2。

步驟3 - 更改服務(wù)器名稱

我們使用server_name條目來指定哪個(gè)域名與配置文件相關(guān)聯(lián)。找到server_name配置文件中的條目。

默認(rèn)情況下,server_name設(shè)置為 _(下劃線),這意味著配置文件負(fù)責(zé)所有傳入的請(qǐng)求。更改 _ 為你的實(shí)際域名,如下所示:

server_name example.com;

保存配置文件并退出文本編輯器。。

每當(dāng)您對(duì)Nginx配置文件進(jìn)行更改時(shí),應(yīng)檢查配置中是否存在語法錯(cuò)誤,如下所示:

$ sudo nginx -t

如果語法無錯(cuò)誤,你將看到以下輸出:

// sudo nginx -t的輸出
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
步驟4 - 添加SSL證書

接下來,您需要配置Nginx以使用您的SSL證書。如果您不知道什么是SSL證書,或者目前沒有SSL證書,請(qǐng)按照本文“前提”部分中的其中一個(gè)教程進(jìn)行操作。

創(chuàng)建一個(gè)目錄以將您的SSL證書存儲(chǔ)在Nginx配置目錄中:

$ sudo mkdir /etc/nginx/ssl

將您的證書和私鑰復(fù)制到此路徑。我們還將重命名文件以顯示它們所關(guān)聯(lián)的域名。當(dāng)您有多個(gè)域與此服務(wù)器關(guān)聯(lián)時(shí),將來將會(huì)派上用場(chǎng)。替換example.com為您的實(shí)際主機(jī)名:

$ sudo cp /path/to/your/certificate.crt /etc/nginx/ssl/example.com.crt
$ sudo cp /path/to/your/private.key /etc/nginx/ssl/example.com.key

現(xiàn)在,我們?cè)俅未蜷_我們的配置文件,并配置SSL。

$ sudo nano /etc/nginx/sites-available/default

在server塊內(nèi)的新行上,定義證書的位置:

// 在/etc/nginx/sites-available/default中
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;

保存文件,并退出文本編輯器。

步驟5 - 避免舊加密套件

HTTP / 2有一個(gè)巨大的黑名單包含舊的和不安全的密碼,所以我們必須避免它們。加密套件是一堆加密算法,它們描述了傳輸數(shù)據(jù)的加密方式。
我們將使用一個(gè)非常受歡迎的密碼集,其安全性被CloudFlare等互聯(lián)網(wǎng)巨頭批準(zhǔn)。它不允許使用MD5加密(自1996年以來被標(biāo)記為不安全,雖然存在這一事實(shí),但目前為止它還在被使用)。

打開以下配置文件:

$ sudo nano /etc/nginx/nginx.conf

ssl_prefer_server_ciphers on;之后添加下面這行。

// 在/etc/nginx/nginx.conf中
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

保存文件,并退出文本編輯器。
再次檢查配置語法錯(cuò)誤:

$ sudo nginx -t
步驟6 - 增加密鑰交換安全性

建立安全連接的第一步是在服務(wù)器和客戶端之間交換私鑰。問題是,這個(gè)時(shí)候,它們之間的連接沒有加密 —— 這意味著傳輸?shù)臄?shù)據(jù)對(duì)任何第三方都是可見的。這就是為什么我們需要Diffie-Hellman-Merkle算法。關(guān)于它如何工作的技術(shù)細(xì)節(jié)是一個(gè)復(fù)雜的事情,無法簡(jiǎn)單解釋,但如果您對(duì)細(xì)節(jié)感興趣,則可以觀看此YouTube視頻。
默認(rèn)情況下,Nginx使用1028位DHE(短暫的Diffie-Hellman)密鑰,這是相對(duì)容易解密的。為了提供最大的安全性,我們應(yīng)該建立自己的,更安全的DHE密鑰。
要做到這一點(diǎn),請(qǐng)鍵入以下命令:

$ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

請(qǐng)記住,我們應(yīng)該在與SSL證書相同的文件夾中生成DH參數(shù)。在本教程中,證書位于/etc/nginx/ssl/。原因是Nginx總是在證書文件夾中查找用戶提供的DHE密鑰,如果存在,則使用它。

在文件路徑(在我們的例子中2048)之后的變量指定密鑰的長(zhǎng)度。2048位長(zhǎng)度的密鑰是足夠安全的,由Mozilla基金會(huì)推薦,但如果您正在尋找更多的加密,則可以將其更改為4096。

生成過程大約需要5分鐘。
一旦完成,再次打開默認(rèn)的Nginx配置文件:

$ sudo nano /etc/nginx/sites-available/default 

server 塊內(nèi)的新行中,設(shè)置自定義DHE密鑰的路徑:

// 在/etc/nginx/sites-available/default中
ssl_dhparam  /etc/nginx/ssl/dhparam.pem;
步驟7 - 將所有HTTP請(qǐng)求重定向到HTTPS

由于我們希望僅通過HTTPS提供內(nèi)容,所以我們應(yīng)該告訴Nginx如果服務(wù)器收到HTTP請(qǐng)求應(yīng)該做什么。

在我們的文件底部,我們將創(chuàng)建一個(gè)新的server塊,用于將所有HTTP請(qǐng)求重定向到HTTPS(請(qǐng)務(wù)必使用實(shí)際的域名替換服務(wù)器名稱):

// 在/etc/nginx/sites-available/default中
server {
       listen         80;
       listen    [::]:80;
       server_name    example.com;
       return         301 https://$server_name$request_uri;
}

保存并退出配置文件。
檢查語法錯(cuò)誤的配置:

$ sudo nginx -t
步驟8 - 重新加載Nginx

這就是所有的Nginx配置更改。由于我們檢查每個(gè)更改的語法錯(cuò)誤,您應(yīng)該準(zhǔn)備好重新啟動(dòng)Nginx并測(cè)試更改。
總而言之,忽略注釋掉的行,您的配置文件現(xiàn)在應(yīng)該類似于:

// 在/etc/nginx/sites-available/default中
server {
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        server_name example.com;

        location / {
                try_files $uri $uri/ =404;
        }

        ssl_certificate /etc/nginx/ssl/example.com.crt;
        ssl_certificate_key /etc/nginx/ssl/example.com.key;
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;
}


server {
       listen         80;
       listen    [::]:80;
       server_name    example.com;
       return         301 https://$server_name$request_uri;
}

要更改生效,請(qǐng)重新啟動(dòng)Nginx服務(wù)器。

# sudo systemctl restart nginx
步驟9 - 驗(yàn)證變更

我們來檢查一下我們的服務(wù)器是否正常運(yùn)行。打開您的網(wǎng)絡(luò)瀏覽器并導(dǎo)航到您的域(替換example.com為您的實(shí)際域名):

example.com

如果一切配置正確,您應(yīng)該自動(dòng)重定向到HTTPS?,F(xiàn)在,我們來看看HTTP / 2是否正常工作:打開Chrome開發(fā)工具(View - > Developer - > Developer Tools)并重新加載頁面(View - > Reload This Page)。然后導(dǎo)航到 Network 選項(xiàng)卡,指向從Name開始的表頭所在行,右鍵單擊它,然后選擇 Protocol 選項(xiàng)。
現(xiàn)在您應(yīng)該看到h2(代表HTTP / 2)的新列,表示您的網(wǎng)站提供HTTP / 2服務(wù)。

在這一點(diǎn)上,我們的服務(wù)器已經(jīng)準(zhǔn)備好通過HTTP / 2協(xié)議提供內(nèi)容了,但是我們?nèi)匀恍枰獮樯a(chǎn)環(huán)境的服務(wù)器做一些準(zhǔn)備。

步驟10 - 優(yōu)化Nginx以獲得最佳性能

首先,我們 nginx.conf 通過在控制臺(tái)中鍵入以下內(nèi)容來打開它們:
在此步驟中,我們將調(diào)整主Nginx配置文件,以獲得最佳性能和安全性。

$ sudo nano /etc/nginx/nginx.conf
啟用連接憑據(jù)緩存

與HTTP相比,HTTPS需要相對(duì)較長(zhǎng)的時(shí)間來建立服務(wù)器和用戶之間的初始連接。為了最小化頁面加載速度的差異,我們將啟用連接憑據(jù)的緩存。這意味著,不是在所請(qǐng)求的每個(gè)頁面上創(chuàng)建一個(gè)新的會(huì)話,服務(wù)器將使用緩存版本的憑據(jù)。
要啟用會(huì)話緩存,http 請(qǐng)?jiān)?nginx.conf 文件塊的末尾添加這些行:

// 在/etc/nginx/nginx.conf中
ssl_session_cache shared:SSL:5m;
ssl_session_timeout 1h;

ssl_session_cache 指定將包含會(huì)話信息的高速緩存的大小。1 MB可以存儲(chǔ)大約4000個(gè)會(huì)話的信息。對(duì)于大多數(shù)用戶來說,默認(rèn)值為5 MB是足夠的,但如果您預(yù)期流量很大,則可以相應(yīng)地增加該值。
ssl_session_timeout 限制特定會(huì)話存儲(chǔ)在緩存中的時(shí)間。該值不應(yīng)該太大(超過一個(gè)小時(shí)),但是將值設(shè)置得太低也是沒有意義的。

啟用HTTP嚴(yán)格傳輸安全(HSTS)

即使我們已經(jīng)將所有常規(guī)HTTP請(qǐng)求重定向到我們的Nginx配置文件中的HTTPS,我們還應(yīng)該啟用HSTS,以避免這些重定向操作。
如果瀏覽器找到HSTS頭部,則在給定的時(shí)間段內(nèi)不會(huì)再嘗試通過常規(guī)HTTP連接到服務(wù)器。無論如何,它將只使用加密的HTTPS連接交換數(shù)據(jù)。這個(gè)頭部還能保護(hù)我們免受協(xié)議降級(jí)攻擊。

將以下行添加到nginx.conf:

// 在/etc/nginx/nginx.conf中
add_header Strict-Transport-Security "max-age=15768000" always;

max-age以秒為單位設(shè)定。15768000秒相當(dāng)于6個(gè)月。
默認(rèn)情況下,此頭部不會(huì)添加到子域請(qǐng)求中。如果您有子域名并希望HSTS適用于所有這些域,則應(yīng)在該行的末尾添加includeSubDomains變量,如下所示:

// 在/etc/nginx/nginx.conf中
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;

保存文件,并退出文本編輯器。
再次檢查配置語法錯(cuò)誤:

$ sudo nginx -t

最后,重新啟動(dòng)Nginx服務(wù)器以應(yīng)用更改。

$ sudo systemctl restart nginx
結(jié)論

您的Nginx服務(wù)器現(xiàn)在提供HTTP / 2頁面。如果您想測(cè)試SSL連接的強(qiáng)度,請(qǐng)?jiān)L問 Qualys SSL實(shí)驗(yàn)室,并針對(duì)您的服務(wù)器運(yùn)行測(cè)試。如果一切配置正確,您應(yīng)該獲得一個(gè)A +標(biāo)記的安全。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39666.html

相關(guān)文章

  • Docker 入門

    摘要:它對(duì)于每一個(gè)容器來說都是唯一的,所以我們可以使用它。首先,我們要確保容器正在運(yùn)行。命令可以查詢進(jìn)程的所有容器。創(chuàng)建成功后會(huì)返回這個(gè)鏡像的信息。請(qǐng)先自行注冊(cè)我們登陸吧輸入對(duì)應(yīng)的,,后,提示表示登陸成功上傳自己的鏡像等待上傳完畢即可。。。。 什么是Docker? 簡(jiǎn)介:Docker是一個(gè)開源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的、自給自足的容器。開發(fā)者在筆記本上編譯測(cè)試通過...

    draveness 評(píng)論0 收藏0
  • Docker學(xué)習(xí)筆記

    摘要:通過類似的操作來方便用戶獲取分發(fā)和更新應(yīng)用鏡像,指令簡(jiǎn)明,學(xué)習(xí)成本較低。例如存放操作系統(tǒng)鏡像的倉庫,稱為倉庫,其中可能包括等不同版本的鏡像。管理服務(wù)如使用實(shí)際上是執(zhí)行了命令。啟動(dòng)使用即退出容器,并后臺(tái)運(yùn)行。 Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制...

    jk_v1 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<