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,无法显示页面。