import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; @RestController @Api("IpController") public class IpController { private final Logger logger = LoggerFactory.getLogger(getClass()); @GetMapping(value = "/test") @ApiOperation("測試") public String test(HttpServletRequest request) { logger.debug("test 正在運行。"); String host = request.getRemoteHost(); int port = request.getRemotePort(); String addr = request.getRemoteAddr(); logger.info("host:{}, port:{}, addr:{}", host, port, addr); String xRealIp = request.getHeader("X-Real-IP"); String xForwardedFor = request.getHeader("X-Forwarded-For");// 若是多層代理,則須要獲取第一個(逗號分隔) String xRealPort = request.getHeader("X-Real-Port"); String cookie = request.getHeader("Cookie"); logger.info("X-Real-IP:{}, X-Forwarded-For:{}, X-Real-Port:{}, Cookie:{}", xRealIp, xForwardedFor, xRealPort, cookie); String xRealIp2 = request.getHeader("X-Real-IP2"); logger.info("X-Real-IP2:{}", xRealIp2);// 其餘命名也能夠 logger.info("X-real-ip:{}", request.getHeader("X-real-ip"));// 不區分大小寫也能夠 return "success"; } }
server { listen 8830; charset UTF-8; access_log /etc/nginx/logs/access_https.log; error_log /etc/nginx/logs/error_https.log; add_header X-Frame-Options "SAMEORIGIN"; server_tokens off; error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 506 /busy.html; location /swagger-ui { proxy_pass http://130.51.23.14:8830; proxy_next_upstream http_502 http_504 http_404 http_403 error timeout invalid_header; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-Port $remote_port; proxy_set_header Cookie $http_cookie; } }
注意:不能location /swagger-ui,會不少資源404,沒法顯示頁面。html