使用SSL配置Nginx反向代理的簡單指南

来源:https://www.cnblogs.com/xjknight/archive/2019/05/15/10871636.html
-Advertisement-
Play Games

反向代理是一個伺服器,它接收通過Web發出的請求,即http和https,然後將它們發送到後端伺服器(或伺服器)。後端伺服器可以是單個或一組應用伺服器 ,如Tomcat,wildfly或Jenkins等,或者甚至可以是其他Web伺服器,如Apache等。 我們已經討論過如何使用Nginx配置簡單的h ...


反向代理是一個伺服器,它接收通過Web發出的請求,即http和https,然後將它們發送到後端伺服器(或伺服器)。後端伺服器可以是單個或一組應用伺服器,如Tomcat,wildfly或Jenkins等,或者甚至可以是其他Web伺服器,如Apache等。

我們已經討論過如何使用Nginx配置簡單的http反向代理。在本教程中,我們將討論如何使用SSL配置Nginx反向代理。因此,讓我們從使用SSL配置Nginx反向代理的過程開始

先決條件

  1. 後端伺服器:為了本教程的目的,我們使用在埠8080的localhost上運行的tomcat伺服器

註意: - 當您開始代理請求時,請確保應用程式伺服器已啟動。

  1. SSL證書:我們還需要在伺服器上配置SSL證書。我們可以使用 let’s encrypt的加密證書,你可以使用這裡提到的程式得到一個。但是對於本教程,我們將使用自簽名證書,可以通過從終端運行以下命令來創建,
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/certs/cert.key -out /etc/nginx/certs/cert.crt
使用ssl配置nginx反向代理的下一步將是nginx安裝,

安裝Nginx

Ubuntu

Nginx可用於預設的Ubuntu存儲庫。這麼簡單,使用以下命令安裝它,

$ sudo apt-get update && sudo apt-get install nginx
現在啟動服務並啟用它以進行啟動,
# systemctl start nginx

# systemctl enable nginx

現在檢查nginx安裝,我們可以打開Web瀏覽器並輸入系統IP作為url以獲取預設的nginx網頁,這確認nginx工作正常。

使用SSL配置Nginx反向代理

現在我們擁有了使用ssl配置nginx反向代理所需的所有東西。我們現在需要在nginx中進行配置,我們將使用預設的nginx配置文件,即/etc/nginx/conf.d/default.conf.

假設這是我們第一次對配置進行任何更改,打開文件並刪除或註釋所有舊文件內容,然後將以下條目放入文件中。

vi /etc/nginx/conf.d/default.conf

server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name linuxtechlab.com;
    ssl_certificate /etc/nginx/ssl/cert.crt;

    ssl_certificate_key /etc/nginx/ssl/cert.key;
    ssl on;
    ssl_session_cache builtin:1000 shared:SSL:10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;
    access_log /var/log/nginx/access.log;
    
    location / {
        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_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://localhost:8080;
        proxy_read_timeout 90;
        proxy_redirect http://localhost:8080 https://linuxtechlab.com;
    }
}

完成所有更改後,保存文件並退出。在我們重新啟動nginx服務以實現所做的更改之前,我們將逐節討論我們所做的配置。

第1節

server {
    listen 80;
    return 301 https://$host$request_uri;
}

在這裡,我們告訴我們要聽取對埠80的任何請求,然後將其重定向到https

第2節

listen 443;
server_name linuxtechlab.com;
ssl_certificate /etc/nginx/ssl/cert.crt;
ssl_certificate_key /etc/nginx/ssl/cert.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;

現在這些是我們正在使用的一些預設的nginx ssl選項,它們告訴nginx web伺服器支持哪種協議版本,SSL密碼。

第3節

location / {
    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_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://localhost:8080;
    proxy_read_timeout 90;
    proxy_redirect http://localhost:8080 https://linuxtechlab.com;
}

現在,本節介紹代理以及傳入請求進入後的位置。現在我們已經討論了所有配置,我們將檢查然後重新啟動nginx服務。

要檢查nginx,請運行以下命令
# nginx -t

一旦我們所有配置文件都ok,我們將重新啟動nginx服務

# systemctl restart nginx

就是這樣,我們的ssl nginx反向代理現已準備就緒。現在要測試設置,您所要做的就是打開Web瀏覽器並輸入URL。我們現在應該重定向到apache tomcat網頁。

這完成了我們如何使用ssl配置nginx反向代理的教程,請使用下麵的註釋框發送有關本教程的任何問題或疑問。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實現原理:使用擴展方法。 使用方法:在窗體的load事件或構造方法中: 擴展方法是.net提供的一個語法糖,使用它可以很方便的封裝一些通用功能。 ...
  • Minikube Kubernetes本地環境進行開發 使用Minikube 啟動Minikube 獲取命名空間 獲取集群信息 獲取節點信息 運行nginx 獲取pods 查看Pod日誌 進入Pod中 獲取deployment 獲取svc(services) 使用Minikube獲取服務訪問地址 刪 ...
  • OS : Arch Linux 桌面:Gnome X11 軟體是從網上下載的iso文件,對文件掛載或者使用解壓軟體解壓,我個人更喜歡掛載,解壓有點麻煩(我比較懶) 軟體:matlab(R2016) 開始吧! #1. 掛載(地址任選,在/mnt下規範些) sudo mkdir /mnt/matlab ...
  • 1. 下載centos7 64位鏡像 linux官網下載:https://www.centos.org/download/ 2. 在VMware上安裝centos7 2.1 新建虛擬機 打開虛擬機主頁,選擇創建新的虛擬機,或者是點擊虛擬機文件選項,選擇新建虛擬機; 選擇典型安裝,點擊下一步; 選擇稍 ...
  • Centos安裝PHP時,安裝php依賴包時yum install libmcrypt libmcrypt-devel,報錯如下: 然後編譯的時候,又報錯: 解決方法:yum install epel-release //擴展包更新包 ...
  • @ "TOC" 常見的運算符 |環境變數|說明| |: :|: :| |+|加 | |減 |\ |乘 |/|除 |%|取模 因為Shell中將 作為通配符使用, expr命令 expr命令可以對 整數 進行算術運算,在算術表達式中如果出現變數,必須在變數前加$,並且要在運算符和變數之間要加空格 若要 ...
  • @ "TOC" shell編程的建立 就建立了一個名叫mytest的文件 vim編輯器沒有接觸過,你就需要學習一下啊,這裡介紹幾個簡單的命令: 單點I進入插入模式 Ctrl+c退出插入模式 在瀏覽模式按下“:”,再輸入q是不保存退出、wq是保存並退出 shell的hello world! 執行腳本的 ...
  • 回到目錄 二級管作為一種非線性器件,電阻值是不固定的,在不同的工作點有不同的電阻值,下麵我們分別討論二極體的直流電阻和交流電阻。 1. 直流電阻 直流電阻(DC resistance)也叫靜態電阻(static resistance),概念比較簡單,就是根據歐姆定律,將二極體兩端的電壓除以流過二極體 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...