spring_reference/IX. ‘How-to’ guides/64.8. Use Tomcat behind a f...

20 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### 64.8. 在前端代理服务器后使用Tomcat
Spring Boot将自动配置Tomcat的`RemoteIpValve`,如果你启用它的话。这允许你透明地使用标准的`x-forwarded-for`和`x-forwarded-proto`头很多前端代理服务器都会添加这些头信息headers。通过将这些属性中的一个或全部设置为非空的内容来开启该功能它们是大多数代理约定的值如果你只设置其中的一个则另一个也会被自动设置
```java
server.tomcat.remote_ip_header=x-forwarded-for
server.tomcat.protocol_header=x-forwarded-proto
```
如果你的代理使用不同的头部headers你可以通过向application.properties添加一些条目来自定义该值的配置比如
```java
server.tomcat.remote_ip_header=x-your-remote-ip-header
server.tomcat.protocol_header=x-your-protocol-header
```
该值也可以配置为一个默认的能够匹配信任的内部代理的正则表达式。默认情况下受信任的IP包括 10/8, 192.168/16, 169.254/16 和 127/8。可以通过向application.properties添加一个条目来自定义该值的配置比如
```java
server.tomcat.internal_proxies=192\\.168\\.\\d{1,3}\\.\\d{1,3}
```
**注**只有在你使用一个properties文件作为配置的时候才需要双反斜杠。如果你使用YAML单个反斜杠就足够了`192\.168\.\d{1,3}\.\d{1,3}`和上面的等价。
另外,通过在一个`TomcatEmbeddedServletContainerFactory` bean中配置和添加`RemoteIpValve`,你就可以完全控制它的设置了。