国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

TalkingData / 3480人閱讀

摘要:本教程將幫助您部署一個支持的快速,安全的服務器。該變量告訴對支持協議的瀏覽器啟用。默認情況下,設置為下劃線,這意味著配置文件負責所有傳入的請求。這個頭部還能保護我們免受協議降級攻擊。

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


介紹

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

前提

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

Ubuntu 16.04 Droplet

具有sudo權限的非root用戶(有關詳細信息,請查看Ubuntu 16.04初始服務器設置。)

完全注冊域名 您可以在 Namecheap
上購買一張或在 Freenom 上免費獲得一張。

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

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

HTTP 1.1和HTTP / 2之間的區別

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

HTTP / 2解決了這個問題,因為它帶來了一些根本性的變化:

所有請求都是并行下載的,而不是在隊列中

HTTP頭部被壓縮

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

即使沒有用戶的請求,服務器也可以“推送”數據,這樣可以提高延遲較高用戶的速度

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

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

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

$ sudo apt-get update

然后,安裝Nginx:

$ sudo apt-get install nginx

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

$ sudo nginx -v

輸出應類似于以下內容:

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

在接下來的幾個步驟中,我們將修改Nginx配置文件。每個步驟都將更改Nginx配置選項。我們將一路測試配置文件的語法。最后,我們將驗證Nginx是否支持HTTP / 2,并進行一些更改以優化性能。

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

我們的第一個更改是將監聽端口80改為443。

打開配置文件:

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

默認情況下,Nginx設置為監聽80端口,這是標準的HTTP端口:

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

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

修改監聽端口為HTTPS協議使用的443:

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

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

步驟3 - 更改服務器名稱

我們使用server_name條目來指定哪個域名與配置文件相關聯。找到server_name配置文件中的條目。

默認情況下,server_name設置為 _(下劃線),這意味著配置文件負責所有傳入的請求。更改 _ 為你的實際域名,如下所示:

server_name example.com;

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

每當您對Nginx配置文件進行更改時,應檢查配置中是否存在語法錯誤,如下所示:

$ sudo nginx -t

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

// 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證書,請按照本文“前提”部分中的其中一個教程進行操作。

創建一個目錄以將您的SSL證書存儲在Nginx配置目錄中:

$ sudo mkdir /etc/nginx/ssl

將您的證書和私鑰復制到此路徑。我們還將重命名文件以顯示它們所關聯的域名。當您有多個域與此服務器關聯時,將來將會派上用場。替換example.com為您的實際主機名:

$ 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

現在,我們再次打開我們的配置文件,并配置SSL。

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

在server塊內的新行上,定義證書的位置:

// 在/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有一個巨大的黑名單包含舊的和不安全的密碼,所以我們必須避免它們。加密套件是一堆加密算法,它們描述了傳輸數據的加密方式。
我們將使用一個非常受歡迎的密碼集,其安全性被CloudFlare等互聯網巨頭批準。它不允許使用MD5加密(自1996年以來被標記為不安全,雖然存在這一事實,但目前為止它還在被使用)。

打開以下配置文件:

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

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

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

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

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

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

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

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

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

server 塊內的新行中,設置自定義DHE密鑰的路徑:

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

由于我們希望僅通過HTTPS提供內容,所以我們應該告訴Nginx如果服務器收到HTTP請求應該做什么。

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

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

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

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

這就是所有的Nginx配置更改。由于我們檢查每個更改的語法錯誤,您應該準備好重新啟動Nginx并測試更改。
總而言之,忽略注釋掉的行,您的配置文件現在應該類似于:

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

要更改生效,請重新啟動Nginx服務器。

# sudo systemctl restart nginx
步驟9 - 驗證變更

我們來檢查一下我們的服務器是否正常運行。打開您的網絡瀏覽器并導航到您的域(替換example.com為您的實際域名):

example.com

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

在這一點上,我們的服務器已經準備好通過HTTP / 2協議提供內容了,但是我們仍然需要為生產環境的服務器做一些準備。

步驟10 - 優化Nginx以獲得最佳性能

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

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

與HTTP相比,HTTPS需要相對較長的時間來建立服務器和用戶之間的初始連接。為了最小化頁面加載速度的差異,我們將啟用連接憑據的緩存。這意味著,不是在所請求的每個頁面上創建一個新的會話,服務器將使用緩存版本的憑據。
要啟用會話緩存,http 請在 nginx.conf 文件塊的末尾添加這些行:

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

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

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

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

將以下行添加到nginx.conf:

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

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

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

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

$ sudo nginx -t

最后,重新啟動Nginx服務器以應用更改。

$ sudo systemctl restart nginx
結論

您的Nginx服務器現在提供HTTP / 2頁面。如果您想測試SSL連接的強度,請訪問 Qualys SSL實驗室,并針對您的服務器運行測試。如果一切配置正確,您應該獲得一個A +標記的安全。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39666.html

相關文章

  • Docker 入門

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

    draveness 評論0 收藏0
  • Docker學習筆記

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

    jk_v1 評論0 收藏0

發表評論

0條評論

TalkingData

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<