最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx將https協(xié)議反向代理到http協(xié)議請(qǐng)求上的實(shí)現(xiàn)

 更新時(shí)間:2023年10月16日 10:05:33   作者:卡卡東~  
本文主要介紹了nginx將https協(xié)議反向代理到http協(xié)議請(qǐng)求上的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1、問題背景

目前一個(gè)系統(tǒng)僅支持https協(xié)議訪問,因后端服務(wù)基于ssl協(xié)議,前端在請(qǐng)求是也需要支持ssl協(xié)議的https請(qǐng)求來訪問。目前的代理服務(wù)器是nginx,現(xiàn)在想要通過http訪問系統(tǒng),需通過nginx的反向代理或者重定向方式將https請(qǐng)求代理為http請(qǐng)求??蓪?shí)現(xiàn)的做法有如下幾種:

1、使后端開放兩種端口,一個(gè)端口支持https協(xié)議訪問,一個(gè)端口支持http協(xié)議訪問,之后前端請(qǐng)求通過nginx代理,同時(shí)nginx也開放兩個(gè)端口(比如80端口作為http訪問,443端口作為https訪問系統(tǒng))。使不同協(xié)議走不同的后端服務(wù)

2、使用nginx的重定向功能,每次http請(qǐng)求過來后重定向?yàn)閔ttps請(qǐng)求

3、使用nginx的反向代理功能,將將https協(xié)議反向代理到http協(xié)議請(qǐng)求上

2、介紹nginx的反向代理功能及配置https協(xié)議

反向代理是一種服務(wù)器架構(gòu),它接收來自客戶端的請(qǐng)求,然后將這些請(qǐng)求轉(zhuǎn)發(fā)到一個(gè)或多個(gè)后端服務(wù)器,并將后端服務(wù)器的響應(yīng)返回給客戶端。
與正向代理的區(qū)別:

正向代理是客戶端與代理服務(wù)器之間的一種代理模式。在正向代理中,客戶端請(qǐng)求首先發(fā)送到代理服務(wù)器,然后由代理服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求給目標(biāo)服務(wù)器。代理服務(wù)器代表客戶端發(fā)送請(qǐng)求,目標(biāo)服務(wù)器并不知道實(shí)際發(fā)出請(qǐng)求的客戶端身份
反向代理是服務(wù)器與后端服務(wù)器之間的一種代理模式。在反向代理中,客戶端請(qǐng)求首先發(fā)送到反向代理服務(wù)器,然后由反向代理服務(wù)器根據(jù)配置將請(qǐng)求轉(zhuǎn)發(fā)給后端的一個(gè)或多個(gè)服務(wù)器。后端服務(wù)器的響應(yīng)再由反向代理服務(wù)器返回給客戶端??蛻舳瞬恍枰篮蠖朔?wù)器的實(shí)際存在。
反向代理就像商店的售貨員,當(dāng)你去商店購(gòu)物時(shí),你與售貨員打交道,但實(shí)際上商品是從后面的倉(cāng)庫(kù)取出來的。售貨員幫你獲取商品,然后交給你。在這個(gè)比喻中,售貨員就是反向代理,倉(cāng)庫(kù)就是后端服務(wù)器,你則是客戶端。

nginx配置https請(qǐng)求,主要是如下方式,且通過location指令將請(qǐng)求代理都后端的https接口上

server {
    listen 443 ssl;
    server_name example.com www.example.com;
    
    ssl_certificate /path/to/ssl/certificate.crt;
    ssl_certificate_key /path/to/ssl/private.key;

    location / {
        # 處理HTTPS請(qǐng)求的配置
        proxy_pass https://backend_server;
    }
}

3、具體實(shí)現(xiàn)

3.1 后端服務(wù)支持方式

springboot應(yīng)用中,可以通過配置文件方式配置開啟端口,但是協(xié)議只能指定一個(gè),如下:通過application.yml的server屬性可以配置一個(gè)https協(xié)議訪問的應(yīng)用端口

如果想要再次打開一個(gè)端口支持http請(qǐng)求,需要根據(jù)使用的后端服務(wù)器編寫配置類,當(dāng)前項(xiàng)目使用的是Jeety服務(wù)器,配置類代碼如下:

import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class HttpConfig {

    @Bean
    public WebServerFactoryCustomizer<JettyServletWebServerFactory> servletContainer() {
        return server -> {
            server.setPort(8081); // 這里配置 HTTP 端口為 8081,也可以通過加配置文件方式獲取
        };
    }
}

這時(shí)候啟動(dòng)項(xiàng)目,會(huì)同時(shí)開放兩個(gè)端口,之后通過nginx代理即可。

3.2 nginx重定向方式

配置 Nginx 以監(jiān)聽 HTTP(80)和 HTTPS(443)端口: 在 Nginx 配置中創(chuàng)建一個(gè)服務(wù)器塊,分別監(jiān)聽 HTTP 和 HTTPS 端口。
配置如下:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    location / {
        return 301 https://$host$request_uri;  # 將 HTTP 請(qǐng)求重定向到 HTTPS
    }
}

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /path/to/ssl/certificate.crt;
    ssl_certificate_key /path/to/ssl/private.key;

    # 這里可以添加其他 HTTPS 相關(guān)的配置
}

return: 這是 Nginx 的一個(gè)指令,用于生成 HTTP 響應(yīng)。
301: 這是 HTTP 狀態(tài)碼,表示永久重定向。當(dāng)瀏覽器或客戶端收到這個(gè)狀態(tài)碼時(shí),它會(huì)知道請(qǐng)求的 URL 已永久性地移動(dòng)到新的位置,因此應(yīng)該更新書簽或緩存。
https://$ host $ request_uri: 這是重定向的目標(biāo) URL。$ host 是 Nginx 內(nèi)置變量,代表用戶請(qǐng)求的主機(jī)名。$request_uri 也是一個(gè)內(nèi)置變量,代表用戶請(qǐng)求的 URI(包括查詢參數(shù))。這部分指定了用戶將被重定向到的 HTTPS 版本的 URL,包括相同的主機(jī)名和請(qǐng)求路徑。

之后通過重新加載 Nginx 配置: 保存配置文件并重新加載 Nginx,以使更改生效。命令如下:

sudo ./nginx -s reload

遇到問題:通過這種方式,真正請(qǐng)求還是會(huì)發(fā)到https協(xié)議下,而且瀏覽器訪問http時(shí)候會(huì)被重定向?yàn)閔ttps。也就是只能做到http訪問后被轉(zhuǎn)換為https協(xié)議,無(wú)法真正使用http請(qǐng)求訪問。

真實(shí)結(jié)果是被301重定向:

3.3、nginx的反向代理方式

將 HTTP 請(qǐng)求代理到 HTTPS,而不執(zhí)行重定向,可以在 HTTP 的服務(wù)器塊中使用代理,這個(gè)配置將 HTTP 請(qǐng)求代理到 HTTPS,而不執(zhí)行重定向。這意味著瀏覽器仍然發(fā)送 HTTP 請(qǐng)求,但 Nginx 將它們代理到相同域名的 HTTPS 端口,然后將響應(yīng)返回給瀏覽器。并且仍然會(huì)在內(nèi)部使用 HTTPS 連接,因此數(shù)據(jù)仍然會(huì)通過加密傳輸。如下所示:

# 配置 HTTP 服務(wù)器塊,監(jiān)聽 HTTP 請(qǐng)求并代理到 HTTPS
server {
    listen 80;
    server_name yourfrontenddomain.com;  # 指定前端域名

    location / {
        proxy_pass https://yourdomain.com;  # 將 HTTP 請(qǐng)求代理到 HTTPS
        add_header 'Access-Control-Allow-Origin' 'http://yourfrontenddomain.com';  # 允許跨域請(qǐng)求來自指定域名
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';  # 允許的 HTTP 方法
        add_header 'Access-Control-Allow-Headers' 'Authorization, Origin, X-Requested-With, Content-Type, Accept';  # 允許的請(qǐng)求頭

		#代理后保證cookie傳遞
		proxy_cookie_path / /;

		# 啟用WebSocket支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

# 配置 HTTPS 服務(wù)器塊,用于 HTTPS 請(qǐng)求
server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;  # 指定后端域名和可能的 www 子域名

    ssl_certificate /path/to/ssl/certificate.crt;  # 指定 SSL 證書的路徑
    ssl_certificate_key /path/to/ssl/private.key;  # 指定 SSL 私鑰的路徑

    # 這里可以添加其他 HTTPS 相關(guān)的配置,如 SSL 版本、密碼套件等
}

通過nginx的http代理https請(qǐng)求中,如果發(fā)生了cookie無(wú)法傳遞,或者其他跨域錯(cuò)誤,可能還需要具體分析問題,但是目前這樣是可行的。
http訪問結(jié)果如下:

https訪問結(jié)果如下:

且后邊的靜態(tài)資源、后端接口通過http和https兩種協(xié)議訪問都正常。

4、關(guān)于nginx常用模塊和指令

Core 模塊:
http: 定義 HTTP 協(xié)議相關(guān)配置。
events: 配置事件驅(qū)動(dòng)模型,如 epoll 和 kqueue。
server: 配置虛擬主機(jī)和服務(wù)器塊。
location: 配置請(qǐng)求的位置和 URI 匹配規(guī)則。

Http 模塊:
access: 控制請(qǐng)求的訪問權(quán)限。
gzip: 啟用 Gzip 壓縮以減小傳輸數(shù)據(jù)的大小。
ssl: 配置 SSL/TLS 相關(guān)設(shè)置,用于啟用 HTTPS。
rewrite: 重寫 URL,可以用于 URL 重定向和重寫。
Upstream 模塊:

Security 模塊:
http_auth_basic: 啟用 HTTP 基本認(rèn)證。
http_limit_req: 限制請(qǐng)求速率,用于防止 DDoS 攻擊。
http_limit_conn: 限制并發(fā)連接數(shù),保護(hù)服務(wù)器免受連接過載攻擊。

Logging 模塊:
access_log: 配置訪問日志的格式和路徑。
error_log: 配置錯(cuò)誤日志的格式和路徑。

Mail 模塊:
mail: 支持郵件代理服務(wù)器功能,可用于配置電子郵件服務(wù)器。
imap: 支持 IMAP 協(xié)議。
smtp: 支持 SMTP 協(xié)議。

Third-party 模塊:
ngx_http_geoip_module: 提供地理位置信息,可用于區(qū)域限制和定位用戶。
ngx_pagespeed: 自動(dòng)優(yōu)化 Web 頁(yè)面,提高性能。
ngx_lua: 提供 Lua 腳本支持,可用于高級(jí)定制和擴(kuò)展功能。
ngx_cache_purge: 提供緩存清除功能,用于手動(dòng)清除代理緩存。

Stream 模塊:用于 TCP 和 UDP 代理,支持負(fù)載均衡。
stream: 配置 TCP/UDP 代理服務(wù)器。
upstream: 配置后端服務(wù)器池。
proxy: 配置反向代理設(shè)置。

 到此這篇關(guān)于nginx將https協(xié)議反向代理到http協(xié)議請(qǐng)求上的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)nginx https協(xié)議反向代理到http協(xié)議內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx安裝SSl模板異常處理方式

    Nginx安裝SSl模板異常處理方式

    文章介紹了在Linux環(huán)境下配置Nginx支持SSL時(shí)遇到的問題及解決方法,主要步驟包括:安裝SSL模塊、解決缺少OpenSSL包的問題,并通過下載和編譯源碼的方式解決SSL模塊安裝失敗的問題
    2025-02-02
  • Nginx下將http改為https的操作步驟

    Nginx下將http改為https的操作步驟

    HTTPS是HTTP協(xié)議的安全版本,通過使用SSL(安全套接層)或TLS(傳輸層安全)協(xié)議加密通信,為數(shù)據(jù)傳輸提供了保密性、完整性和身份認(rèn)證,本文給大家介紹了Nginx下將http改為https的操作方法,需要的朋友可以參考下
    2024-08-08
  • Mac使用Nginx設(shè)置代理并禁用自帶Apache的問題記錄

    Mac使用Nginx設(shè)置代理并禁用自帶Apache的問題記錄

    本文介紹如何在Mac上禁用自帶的Apache服務(wù)并安裝Nginx,首先需要關(guān)閉Apache并禁止其自啟動(dòng),接著,通過Homebrew安裝Nginx,并配置其文件和目錄,最后,介紹了如何生成SSL/自簽名證書,詳細(xì)步驟包括修改Apache配置、安裝Nginx、編輯Nginx配置文件以及驗(yàn)證和重啟Nginx服務(wù)
    2024-09-09
  • Nginx 反向代理配置避坑指南(proxy_pass 斜杠、502排查、CORS、文件上傳)

    Nginx 反向代理配置避坑指南(proxy_pass 斜杠、502排查、CORS、文件上傳)

    本文系統(tǒng)總結(jié)了Docker環(huán)境下Nginx反向代理配置的10個(gè)常見問題及解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • Nginx配置檢測(cè)服務(wù)狀態(tài)的實(shí)現(xiàn)方法

    Nginx配置檢測(cè)服務(wù)狀態(tài)的實(shí)現(xiàn)方法

    這篇文章主要介紹了Nginx配置檢測(cè)服務(wù)狀態(tài)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 詳解Nginx啟用proxy_buffer緩沖

    詳解Nginx啟用proxy_buffer緩沖

    本篇文章主要介紹了Nginx啟用proxy_buffer緩沖,Nginx啟用proxy_buffer緩沖,本文詳細(xì)的介紹了基本用法,具有一定的參考價(jià)值,有興趣的可以了解一下
    2018-01-01
  • Nginx中map指令的具體使用

    Nginx中map指令的具體使用

    Nginx的map指令是一個(gè)強(qiáng)大的工具,用于根據(jù)變量的值來設(shè)置另一個(gè)變量的值,本文就來介紹一下Nginx中map指令的具體使用,感興趣的可以了解一下
    2024-07-07
  • 通過Nginx實(shí)現(xiàn)前端與后端的協(xié)同部署

    通過Nginx實(shí)現(xiàn)前端與后端的協(xié)同部署

    在現(xiàn)代 web 開發(fā)中,前端與后端的協(xié)同部署是一個(gè)關(guān)鍵問題,一個(gè)高效的部署策略不僅能提升用戶體驗(yàn),還能簡(jiǎn)化開發(fā)流程,今天,我們就來探討如何利用 Nginx 實(shí)現(xiàn)前端與后端的協(xié)同部署,需要的朋友可以參考下
    2025-03-03
  • linux下nginx負(fù)載均衡搭建的方法步驟

    linux下nginx負(fù)載均衡搭建的方法步驟

    本篇文章主要介紹了linux下nginx負(fù)載均衡搭建的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • nginx反向代理二級(jí)域名綁定方法及注意事項(xiàng)

    nginx反向代理二級(jí)域名綁定方法及注意事項(xiàng)

    本文介紹了利用nginx實(shí)現(xiàn)多域名和多站點(diǎn)的綁定的方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-04-04

最新評(píng)論

蒙自县| 神池县| 阿克苏市| 泰宁县| 中宁县| 来凤县| 旅游| 阳信县| 三原县| 庄河市| 英德市| 浪卡子县| 巢湖市| 晋江市| 佛教| 千阳县| 保定市| 呼伦贝尔市| 湖北省| 常熟市| 鄂托克前旗| 华安县| 清河县| 扶风县| 运城市| 洛扎县| 黔江区| 辽源市| 民和| 伊吾县| 洮南市| 确山县| 峨边| 平南县| 化隆| 富阳市| 葵青区| 于都县| 温泉县| 延寿县| 长垣县|