Skip to main content

Swagger Server URL이 http로 뜰 때

등록일: 2025. 7. 14. 0:41


1. ForwardedHeaderFilter 등록

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.ForwardedHeaderFilter;

@Configuration
public class WebConfig {

@Bean
public ForwardedHeaderFilter forwardedHeaderFilter() {
return new ForwardedHeaderFilter();
}
}

2. Nginx에서 X-Forwarded-* 헤더 전달 설정

location / {
proxy_pass http://localhost:8080;
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;
}

특히 X-Forwarded-Proto $scheme 이 중요함.
이걸 통해 Spring Boot가 원래 요청이 HTTP인지 HTTPS인지 알 수 있게 됨.

3. (선택) Swagger OpenAPI 강제 설정

springdoc:
swagger-ui:
use-root-path: true
default-produces-media-type: application/json
default-consumes-media-type: application/json
show-actuator: true
api-docs:
enabled: true
path: /v3/api-docs
swagger-ui:
path: /swagger-ui.html
urls:
- name: Default
url: /v3/api-docs
# 이걸 명시적으로 지정해버리면 URL 고정 가능
# 하지만 권장되는 방법은 아님
server-url: [https://your-domain.com](https://your-domain.com)