假如我現在node基本架構如下:
|----项目 | |--- static # 存放html文件 | | |--- index.html # index.html | |--- node_modules # 依赖包 | |--- app.js # node 入口文件 | |--- package.json | |--- .babelrc # 转换es6文件
index.html 檔案程式碼如下:
<!doctype html> <html> <head> <meta charset=utf-8> <meta name="referrer" content="never"> <title>nginx配置https</title> </head> <body> <div> <h2 id="欢迎使用https来访问页面">欢迎使用https来访问页面</h2> </div> </body> </html>
app.js 程式碼如下:
const koa = require('koa'); const fs = require('fs'); const path = require('path'); const router = require('koa-router')(); const koabody = require('koa-body'); const static = require('koa-static'); const app = new koa(); router.get('/', (ctx, next) => { // 设置头类型, 如果不设置,会直接下载该页面 ctx.type = 'html'; // 读取文件 const pathurl = path.join(__dirname, '/static/index.html'); ctx.body = fs.createreadstream(pathurl); next(); }); app.use(static(path.join(__dirname))); app.use(router.routes()); app.use(router.allowedmethods()); app.listen(3001, () => { console.log('server is listen in 3001'); });
package.json 程式碼如下;
{ "name": "uploadandload", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { "dev": "nodemon ./app.js" }, "author": "", "license": "isc", "dependencies": { "fs": "0.0.1-security", "koa": "^2.7.0", "koa-body": "^4.1.0", "koa-router": "^7.4.0", "koa-send": "^5.0.0", "koa-static": "^5.0.0", "nodemon": "^1.19.0", "path": "^0.12.7" } }
然後我在專案的根目錄下執行npm run dev 後,就可以在瀏覽器下訪問http://localhost:3001 了,但是為了我想使用網域存取的話,因此我們可以在hosts檔案下綁定下域名,例如叫xxx.abc.com . hosts檔案如下綁定:
127.0.0.1 xxx.abc.com
因此這個時候我們使用http://xxx.abc.com:3001/ 就可以訪問頁面了,如下所示:
如上所示,我們就可以訪問頁面了,但是我們有沒有發現,在chrome瀏覽器下顯示http請求是不安全的,因此這個時候我想使用https來訪問就好了,網頁的安全性就得到了保障,但是這個時候如果我什麼都不做,直接使用https去訪問的話是不行的,比如地址:https:/ /xxx.abc.com:3001. 如下圖所示:
#我們知道使用https存取的話,一般是需要安全性憑證的,因此我們現在的任務是需要使用nginx來設定下安全憑證之類的事情,然後使用https能存取網頁就能達到目標。
nginx設定https服務
1. 首先進入nginx目錄下,使用指令:cd /usr/local/etc/nginx。然後在該目錄下建立 cert資料夾,目的是存放憑證檔案。
使用指令:mkdir cert 如下所示:
2. 然後我們需要把憑證相關的文件,例如server.crt 和server.key 檔案複製到該cert目錄下。例如如下憑證檔案:
至於如上憑證是如何生存的,可以請看我上篇文字
移動指令:mv server.key /usr /local/etc/nginx/cert, 例如把server.key 和server.crt檔案都移到/usr/local/etc/nginx/cert目錄下。如下圖所示:
然後我們再查看下/usr/local/etc/nginx/cert 目錄下,有如下文件,如下所示:
3. nginx的設定
nginx的設定需要加上以下程式碼:
server { listen 443 ssl; server_name xxx.abc.com; ssl on; // 该配置项需要去掉 ssl_certificate cert/server.crt; ssl_certificate_key cert/server.key; /* 设置ssl/tls会话缓存的类型和大小。如果设置了这个参数一般是shared,buildin可能会参数内存碎片,默认是none,和off差不多,停用缓存。如shared:ssl:10m表示我所有的nginx工作进程共享ssl会话缓存,官网介绍说1m可以存放约4000个sessions。 */ ssl_session_cache shared:ssl:1m; // 客户端可以重用会话缓存中ssl参数的过期时间,内网系统默认5分钟太短了,可以设成30m即30分钟甚至4h。 ssl_session_timeout 5m; /* 选择加密套件,不同的浏览器所支持的套件(和顺序)可能会不同。 这里指定的是openssl库能够识别的写法,你可以通过 openssl -v cipher 'rc4:high:!anull:!md5'(后面是你所指定的套件加密算法) 来看所支持算法。 */ ssl_ciphers high:!anull:!md5; // 设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。 ssl_prefer_server_ciphers on; location / { proxy_pass http://localhost:3001; } }
注意:如上ssl on; 這個設定項需要去掉。假如是如上的配置後,我重新啟動下nginx指令會報錯,如下所示:
ssl: error:06065064:digital envelope routines:evp_decryptfinal_ex:bad decrypt error :0906a065:pem routines:pem_do_header:bad decrypt 類似這樣的錯,然後透過百度搜尋這個錯誤,透過以下方法可以解決:
進入到該目錄下:cd /usr/local/etc/nginx/ cert 接著執行下面兩句程式碼即可:
cp server.key server.key.org openssl rsa -in server.key.org -out server.key
如下:
#可以看百度搜尋出來的頁面
然後當我繼續重啟下nginx, 發現還會報錯,報錯訊息如下:
nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead
然後繼續把ssl on; 這句配置項目去掉就可以了,可能和nginx的版本有關係
#最近升級到 nginx 1.15,reload之後所有帶ssl 的站點都報這個警告了,查了很多資料,最後在github 上面找到了一條相關的英文說明: ( ) 本人英文不好,大概意思應該是說 nginx 1.15 及以後的版本,不需要再寫 ssl on; 了。
去 nginx.conf 刪除 ssl on; 之後,reload,果然沒再報警,目前使用沒啥問題。
我確實理解錯了,應該把 ssl on 改成 listen 443 ssl 這樣才對。
現在我繼續重啟下nginx就ok了,如下圖:
#但是如上配置後,我們還不能直接使用網域https:// xxx.abc.com/ 訪問了,我們還需要在瀏覽器下把自己之前生成的client.crt 證書安裝上去,在mac系統下操作步驟如下:
#1. 點擊如下啟動台。如下圖所示:
2. 搜尋鑰匙圈訪問,點擊進去,如下所示
3. 進入到憑證頁面,把我們之前的client.crt證書會拖進去即可,例如我之前產生的client.crt證書,如下:
4. 右鍵點選我的證書,然後點選"顯示簡介", 進入到證書詳情頁面後。如下圖所示:
5. 進入頁面後,使用憑證時,選擇始終信任後,如下圖所示:
6. 然後退出,可能需要輸入電腦開機密碼,輸入完成,會自動儲存。然後我們在瀏覽器造訪該 https://xxx.abc.com/ 頁面後就可以造訪的到了。如下所示:
然後我們點擊繼續造訪即可看到頁面了,如下所示:
如上就是使用nginx 憑證實作本機node https服務了。
但是如上https雖然可以訪問,但是https前面還是顯示不安全的文案; 如下圖所示:
以上是nginx如何設定SSL憑證實現https服務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

NGINX适合高并发和低资源消耗场景,Apache适用于需要复杂配置和功能扩展的场景。1.NGINX以高性能处理大量并发连接著称。2.Apache以稳定性和丰富模块支持见长。选择时需根据具体需求决定。

NGINXisessentialformodernwebapplicationsduetoitsrolesasareverseproxy,loadbalancer,andwebserver,offeringhighperformanceandscalability.1)Itactsasareverseproxy,enhancingsecurityandperformancebycachingandloadbalancing.2)NGINXsupportsvariousloadbalancingm

通過Nginx配置SSL/TLS來確保網站安全,需要以下步驟:1.創建基本配置,指定SSL證書和私鑰;2.優化配置,啟用HTTP/2和OCSPStapling;3.調試常見錯誤,如證書路徑和加密套件問題;4.應用性能優化建議,如使用Let'sEncrypt和會話復用。

Nginx是高性能的HTTP和反向代理服務器,擅長處理高並發連接。 1)基本配置:監聽端口並提供靜態文件服務。 2)高級配置:實現反向代理和負載均衡。 3)調試技巧:檢查錯誤日誌和測試配置文件。 4)性能優化:啟用Gzip壓縮和調整緩存策略。

Nginx缓存可以通过以下步骤显著提升网站性能:1)定义缓存区和设置缓存路径;2)配置缓存有效期;3)根据不同内容设置不同的缓存策略;4)优化缓存存储和负载均衡;5)监控和调试缓存效果。通过这些方法,Nginx缓存能减少后端服务器压力,提升响应速度和用户体验。

使用DockerCompose可以簡化Nginx的部署和管理,通過DockerSwarm或Kubernetes進行擴展是常見的做法。 1)使用DockerCompose定義和運行Nginx容器,2)通過DockerSwarm或Kubernetes實現集群管理和自動擴展。

Nginx的高級配置可以通過服務器塊和反向代理實現:1.服務器塊允許在一個實例中運行多個網站,每個塊獨立配置。 2.反向代理將請求轉發到後端服務器,實現負載均衡和緩存加速。

Nginx性能調優可以通過調整worker進程數、連接池大小、啟用Gzip壓縮和HTTP/2協議、使用緩存和負載均衡來實現。 1.調整worker進程數和連接池大小:worker_processesauto;events{worker_connections1024;}。 2.啟用Gzip壓縮和HTTP/2協議:http{gzipon;server{listen443sslhttp2;}}。 3.使用緩存優化:http{proxy_cache_path/path/to/cachelevels=1:2k


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載
最受歡迎的的開源編輯器