1. 程式人生 > >SpringBoot+Nginx+Https下redirect問題

SpringBoot+Nginx+Https下redirect問題

問題描述

專案採用springboot框架,內嵌tomcat容器。前端採用nginx反向代理,當部署了https以後出現的重定向(redirect)的問題。用nginx反向代理tomcat,然後把nginx配置為https訪問,並且nginx與tomcat之間配置為普通的http協議,當後臺程式碼定義時redirect,實際是重定向到了http下的地址,導致瀏覽器上無法訪問非https的地址。

解決方案

配置nginx

由於對tomcat而言收到的是普通的http請求,因此當tomcat裡的應用發生轉向請求時將轉向為http而非https,為此我們需要告訴tomcat已被https代理,方法是增加X-Forwared-Proto和X-Forwarded-Port兩個HTTP頭資訊。

server {
    listen 80;
    listen 443 ssl;
    server_name localhost;
    ssl_certificate server.crt;
    ssl_certificate_key server.key;
    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded
-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; } }

配置tomcat

基於spring-boot開發時只需在application.properties中進行配置。
該配置將指示tomcat從HTTP頭資訊中去獲取協議資訊(而非從HttpServletRequest中獲取

server.tomcat.remote_ip_header=x-forwarded-for
server.tomcat.protocol_header=x-forwarded-proto
server.
tomcat.port-header=X-Forwarded-Port server.use-forward-headers=true

以下是經常被漏掉的配置,本人一開始就忘記配置導致不成功。因為我的nginx的機器IP不在預設允許IP列表裡

Tomcat is also configured with a default regular expression that matches internal proxies that are to be trusted. By default, IP addresses in 10/8, 192.168/16, 169.254/16 and 127/8 are trusted. You can customize the valve’s configuration by adding an entry to application.properties, e.g.

server.tomcat.internal-proxies=192\\.168\\.\\d{1,3}\\.\\d{1,3}

此外,雖然我們的tomcat被nginx反向代理了,但仍可訪問到其8080埠。為此可在application.properties中增加一行:

server.address=127.0.0.1

這樣一來其8080埠就只能被本機訪問了,其它機器訪問不到。

相關推薦

SpringBoot+Nginx+Httpsredirect問題

問題描述 專案採用springboot框架,內嵌tomcat容器。前端採用nginx反向代理,當部署了https以後出現的重定向(redirect)的問題。用nginx反向代理tomcat,然後把nginx配置為https訪問,並且nginx與tomcat之間

解決nginx https ATS檢測未通過 的思路

配置好了nginx的443埠,上線蘋果應用商城時出現了沒通過。然後通過騰訊雲的ATS檢測https://www.qcloud.com/product/ssl報了下面這個錯誤。 然後騰訊雲給了提示,要

Ubuntu16.04配置nginx HTTPS + RTMP流媒體伺服器

Ubuntu16.04下配置HTTPS + rtmp伺服器 1.   在/usr目錄下建立資料夾nginx-install: cd /usr mkdir nginx-install cd nginx-install 2.  &nbs

CENTOS php 7.0 +nginx 環境 安裝yaf框架

yaf框架安裝;cent os安裝yaf #php -v PHP 7.0.19 (cli) (built: May 12 2017 21:01:27) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c)

Nginx+phpfastcgiflush 一下子全部輸出問題

die() lee 如果 cgi header cnblogs encoding fpm 運行 最近由於業務需要,需要使用php的flush輸出緩存刷新,處理瀏覽器超時問題. 最初的測試代碼如下: ob_start();//打開緩沖區for ($i=10; $i>0;

thinkphp 3.2.3在nginx+php的url重寫配置經驗

重啟 des for scrip erro desc stub think jpeg 環境:centos7.2+lnmp1.3(nginx+php7.0+mysql5.5) 進入服務器配置路徑:cd /usr/local/nginx/conf/nginx.conf 修改n

Thinkphp+Nginx(PHPstudy)報的404錯誤,403錯誤解決

cati .cn 圖片 是的 orb log vhost 解決 查找 最近一個TP5的項目說放到Nginx下測試看看,下載個 PHPstudy,放到WWW下,配置好域名,直接給個報個404; 解決方法: 1.先在phpstudy下配置好域名目錄指向項目下的public下;

nginx https server 解析問題

www 文件中 tdi read 直接 linux 文件創建 ttl pen https 協議的主機名獲取規則 如下鏈接 http://www.ttlsa.com/web/multiple-https-host-nginx-with-a-ip-config

Nginx Https配置不帶www跳轉www

list cdh cat down crt http .com -a 301永久重定向 把 morethink.cn和www.morethink.cn合並到一個server上去,使用301永久重定向。 然後將 https://morethink.cn 轉到 https://

nginx https

med cer include var 1.2 listen nginx eal serve ================================== server{listen 443;server_name farm.gz.1252039095

新安裝的nginx環境運行tp框架路由不能用的問題

pass cati 這一 start 框架 clas param fff nbsp location ~ \.php { #去掉$ root H:/PHPServer/WWW; 筆者這裏默認是 html; fastcg

let‘s encrypt之nginx-https沒有小鎖

body img header pos secure str javascrip bubuko port 1、使用let‘s encrypt 加密後的nginx,訪問的時候,發現沒有小鎖,chrome中: 火狐瀏覽器上: 會看到如上信息,這是因為css、圖片或

oracle12C 無法打開httpsem轉換成http

sys ucc tps set 打開 onf lap 5.4 exec sys@jyCDB> exec dbms_xdb_config.sethttpsport(0); PL/SQL procedure successfully completed. Elapsed:

Nginx + LUA流量攔截算法

str 支持 CA 購物車結算 Go 人的 bold word als 前言 每逢大促必壓測,每逢大促必限流,這估計是電商人的常態。每次大促期間,業務流量是平時的幾倍十幾倍,大促期間大部分業務都會集中在購物車結算,必須限流,才能保證系統不宕機。 限流算法 限流算法一般有三種

phpmyadmin在nginx環境配置錯誤

add cat app java scrip location header nbsp ava location ~ \.css { add_header Content-Type text/css; }

小編帶您進入SpringBoot (1) idea的環境搭建及demo

Delve 繼續 tap initial ret epo public 三方庫 maven 1.Spring Boot簡介wiki上的介紹: Spring Boot是Spring的常規配置解決方案,用於創建可以“運行”的獨立的,生產級的基於Spring的應用程序。[22]它

Nginx HTTPS

註意事項 pass 修改 之前 rc4 verify country 配置nginx 防篡改 Nginx HTTPS HTTPS基本概述 為什麽需要使用HTTPS, 因為HTTP不安全 1.傳輸數據被中間人盜用, 信息泄露 2.數據內容劫持, 篡改 配置HTTPS前預備知識

nginx https 流量代理轉發

etc sha256 server cdh ica serve 用戶 undle timeout 流量轉發 #用戶直接訪問 pay.game.com 速度慢. 通過proxypay 服務器訪問, 並將請求結果返回給用戶. server {

百曉生詳解nginxnginx在實際生產環境中的應用(該帖連載更新)

2.0 編譯環境 + - apache 80端口 ali oss keep fff 案例一:Nginx+Tomcat負載均衡集群的部署案例概述:京北點指科技有限公司發布V3版移聯建站管理系統,該項目為JAVA語言開發web站點。實驗環境:站點服務器(tomcat1)cent

Nginx環境對部分網站做防盜鏈設置及外鏈的跳轉

strong 更多 轉變 rman 請求 $1 鏈接 不錯 防盜 關於Nginx防盜鏈的設置,之前發過一篇文章:Linux 雲主機下Nginx與Apache環境防盜鏈設置方式,而這個方式就是連一切的站點都屏蔽了,偶然候並不快合有些站點,現時再分享一個Nginx限定有些站點外