国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

通過nginx將https協(xié)議反向代理到http協(xié)議請求上

這篇具有很好參考價值的文章主要介紹了通過nginx將https協(xié)議反向代理到http協(xié)議請求上。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、問題背景

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

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

2、使用nginx的重定向功能,每次http請求過來后重定向為https請求

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

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

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

正向代理是客戶端與代理服務(wù)器之間的一種代理模式。在正向代理中,客戶端請求首先發(fā)送到代理服務(wù)器,然后由代理服務(wù)器轉(zhuǎn)發(fā)請求給目標服務(wù)器。代理服務(wù)器代表客戶端發(fā)送請求,目標服務(wù)器并不知道實際發(fā)出請求的客戶端身份
反向代理是服務(wù)器與后端服務(wù)器之間的一種代理模式。在反向代理中,客戶端請求首先發(fā)送到反向代理服務(wù)器,然后由反向代理服務(wù)器根據(jù)配置將請求轉(zhuǎn)發(fā)給后端的一個或多個服務(wù)器。后端服務(wù)器的響應(yīng)再由反向代理服務(wù)器返回給客戶端。客戶端不需要知道后端服務(wù)器的實際存在
反向代理就像商店的售貨員,當你去商店購物時,你與售貨員打交道,但實際上商品是從后面的倉庫取出來的。售貨員幫你獲取商品,然后交給你。在這個比喻中,售貨員就是反向代理,倉庫就是后端服務(wù)器,你則是客戶端。

nginx配置https請求,主要是如下方式,且通過location指令將請求代理都后端的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請求的配置
        proxy_pass https://backend_server;
    }
}

3、具體實現(xiàn)

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

springboot應(yīng)用中,可以通過配置文件方式配置開啟端口,但是協(xié)議只能指定一個,如下:通過application.yml的server屬性可以配置一個https協(xié)議訪問的應(yīng)用端口
通過nginx將https協(xié)議反向代理到http協(xié)議請求上,筆記,http,nginx,https
如果想要再次打開一個端口支持http請求,需要根據(jù)使用的后端服務(wù)器編寫配置類,當前項目使用的是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,也可以通過加配置文件方式獲取
        };
    }
}

這時候啟動項目,會同時開放兩個端口,之后通過nginx代理即可。

3.2 nginx重定向方式

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

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

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

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

sudo ./nginx -s reload

遇到問題:通過這種方式,真正請求還是會發(fā)到https協(xié)議下,而且瀏覽器訪問http時候會被重定向為https。也就是只能做到http訪問后被轉(zhuǎn)換為https協(xié)議,無法真正使用http請求訪問。
通過nginx將https協(xié)議反向代理到http協(xié)議請求上,筆記,http,nginx,https
真實結(jié)果是被301重定向:
通過nginx將https協(xié)議反向代理到http協(xié)議請求上,筆記,http,nginx,https

3.3、nginx的反向代理方式

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

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

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

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

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

# 配置 HTTPS 服務(wù)器塊,用于 HTTPS 請求
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請求中,如果發(fā)生了cookie無法傳遞,或者其他跨域錯誤,可能還需要具體分析問題,但是目前這樣是可行的。
http訪問結(jié)果如下:
通過nginx將https協(xié)議反向代理到http協(xié)議請求上,筆記,http,nginx,https
https訪問結(jié)果如下:
通過nginx將https協(xié)議反向代理到http協(xié)議請求上,筆記,http,nginx,https
且后邊的靜態(tài)資源、后端接口通過http和https兩種協(xié)議訪問都正常。

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

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

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

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

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

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

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

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

通過nginx將https協(xié)議反向代理到http協(xié)議請求上,筆記,http,nginx,https文章來源地址http://www.zghlxwxcb.cn/news/detail-713521.html

到了這里,關(guān)于通過nginx將https協(xié)議反向代理到http協(xié)議請求上的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Nginx接收Http協(xié)議請求轉(zhuǎn)發(fā)使用Https協(xié)議

    公司使用阿里的apigateway,規(guī)定不太友好,同是SIT環(huán)境,A系統(tǒng)的SIT1環(huán)境居然不能調(diào)用B系統(tǒng)的SIT2環(huán)境的接口。因為各個系統(tǒng)之間部署的SIT環(huán)境數(shù)量不同A系統(tǒng)可能只有1套,B系統(tǒng)可能有8套,這樣的話,可能會隨時切換調(diào)用B系統(tǒng)的環(huán)境,管理員不允許,于是想著用Nginx做下轉(zhuǎn)發(fā)。

    2024年02月08日
    瀏覽(28)
  • Nginx 配置 HTTPS 過程(+反向代理)

    Nginx 配置 HTTPS 過程(+反向代理)

    nginx配置HTTPS前置條件 我這里參考了一個網(wǎng)友的文章,有興趣可以直達:手把手教你Nginx 配置 HTTPS 完整過程_somnus_小凱的博客-CSDN博客_nginx配置https?。 不建議只一端配置https,另一端不配置,因為瀏覽器會攔截并給你一個白眼: mixed-content 。大意是要你:? 前端https頁面中不能

    2023年04月08日
    瀏覽(26)
  • Nginx之正向代理與反向代理進階(支持https)

    Nginx之正向代理與反向代理進階(支持https)

    在【Nginx之正向代理與反向代理】一文中我們實現(xiàn)了將Nginx服務(wù)器作為正向代理服務(wù)器和反向代理服務(wù)器, 但美中不足的是僅支持http協(xié)議,不支持https協(xié)議 。 我們先看看看http和https的區(qū)別: http協(xié)議 :協(xié)議以明文方式發(fā)送數(shù)據(jù),不提供任何方式的數(shù)據(jù)加密。不適合傳輸一些敏

    2024年02月13日
    瀏覽(33)
  • kkviewfile 實現(xiàn)nginx反向代理+https

    kkviewfile 實現(xiàn)nginx反向代理+https

    3.1 如果訪問出錯,并且報錯信息是下圖 兩種解決方案 第一用我打包好的jar,下載替換就行 代碼是 2021年7月6日,v4.0.0 版本 下載地址:鏈接: https://pan.baidu.com/s/1yqJDa75tokAWQhn_tfCOmA?pwd=ribv 提取碼: ribv 第二你自己在gitee拉取代碼進行處理 如果拉取中報錯 error: RPC failed; curl 18 tr

    2024年02月11日
    瀏覽(24)
  • nginx 離線安裝 https反向代理

    nginx 離線安裝 https反向代理

    1.1 安裝gcc和gcc-c++ 1.1.1下載依賴包 gcc依賴下載鏡像地址: 官網(wǎng):https://gcc.gnu.org/releases.html 阿里云鏡像站:http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/ CentOS 鏡像站點:https://vault.centos.org/7.5.1804/os/x86_64/Packages/ ?只需下載如下依賴即可: 1.1.2 上傳依賴包 下載完成后,將依賴包上

    2024年02月02日
    瀏覽(26)
  • Nginx反向代理請求頭丟失

    請求頭丟失問題 在配置nginx使用https對服務(wù)器上的應(yīng)用程序進行代理時,查看應(yīng)用程序的訪問日志發(fā)現(xiàn)請求頭中的token信息丟失了。 解決方案 在對應(yīng)的https配置模塊中添加以下內(nèi)容 同時在http模塊中添加配置 完整配置如下

    2024年02月16日
    瀏覽(25)
  • Nginx常用配置-反向代理-https重定向-端口轉(zhuǎn)發(fā)

    二級目錄映射 目前前后端項目分離場景多了以后,一般是前端一個端口,后端一個端口。 如前端是https://example.com/index.html,調(diào)用的接口是https://example.com:4433 如此部署對于一些小項目未免有些麻煩,當然你在公網(wǎng)環(huán)境下也可以選擇使用子域名、其他域名進行跨域訪問。 這里說

    2024年02月16日
    瀏覽(21)
  • linux下nginx配置https和反向代理本地端口

    1 修改配置文件/etc/nginx/sites-enabled/default? 在配置文件中增加一個server用來做https端口監(jiān)聽, ssl_certificate和ssl_certificate_key修改為自己申請的https認證文件 location ?/pose { ?????????????proxy_pass http://127.0.0.1:10084; ??} 此處將以/pose開始的api轉(zhuǎn)發(fā)到本機127.0.0.1:10084,需要注意的

    2024年02月12日
    瀏覽(17)
  • nginx部署以及反向代理多域名實現(xiàn)HTTPS訪問

    nginx部署以及反向代理多域名實現(xiàn)HTTPS訪問

    直接進入/opt/nginx_main/nginx-info里面創(chuàng)建了 選擇域名 然后配置免費ssl證書 證書設(shè)置我們需要的域名 然后申請之后稍等一段時間 之后點擊下載,下載nginx的證書文件 一個pem,一個key 然后把下載的證書放到上面的 ssl路徑 記錄好位置即可,步驟 2.5會用到 1.先進入阿里云的數(shù)字證

    2024年02月12日
    瀏覽(26)
  • Caddy反向代理轉(zhuǎn)發(fā)修改http請求路徑

    Caddy是個非常不錯的開源服務(wù)器產(chǎn)品,簡單易用,自帶ssl。只是沒啥詳細的中文文檔,遇到問題只能看官方文檔。 記錄一下使用Caddy轉(zhuǎn)發(fā)http請求的方法。 問題:將http://192.168.1.10:7077/product/*的請求轉(zhuǎn)發(fā)到http://192.168.1.12:7078/*。這里其實是兩個需求,一個是轉(zhuǎn)發(fā)端口,還有個是去

    2024年02月12日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包