【发布时间】:2020-02-26 22:30:31
【问题描述】:
我有一个在 App Engine Flex Custom Runtime 上运行的应用程序。这个应用程序是一个运行在 tomcat 8 (java 8) 之上的 Java WAR 包。为了在 App Engine Flex Custom Runtime 上运行,我创建了一个 docker 映像:
FROM tomcat:alpine
USER root
WORKDIR /root
RUN rm -rf /usr/local/tomcat/webapps/*
COPY ROOT.war /usr/local/tomcat/webapps/ROOT.war
#RUN chmod +x /root/env.sh
RUN rm -f /usr/local/tomcat/conf/server.xml
RUN rm -f /usr/local/tomcat/conf/web.xml
COPY app.jks /usr/local/tomcat/conf/app.jks
COPY server.xml /usr/local/tomcat/conf/server.xml
COPY web.xml /usr/local/tomcat/conf/web.xml
#Set properly time zone
RUN apk --update add tzdata && \
cp /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime && echo "America/Sao_Paulo" > /etc/timezone && \
apk del tzdata
我读到使用 flex 和自定义运行时不可能将应用引擎配置为重定向,这必须在我的应用程序中完成,所以我修改了我的 tomcat 中的 server.xml 和 web.xml,如下所示:
server.xml:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="/usr/local/tomcat/conf/app.jks" keystorePass="my_password"
clientAuth="false" sslProtocol="TLS"/>
web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>Secured</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
还有我的 app.yaml:
runtime: custom
env: flex
network:
session_affinity: true
forwarded_ports:
- 443:8443
- 80:8080
resources:
cpu: 1
memory_gb: 2
disk_size_gb: 10
manual_scaling:
instances: 1
beta_settings:
cloud_sql_instances: path-db
似乎我的应用程序和“互联网”之间存在某些东西,因为每次我尝试访问它时,它都会一直循环,就好像当它到达我的 docker 容器时它总是 HTTP 而不是 HTTPS。 有人可以发现我的错误是什么?为什么我无法使用应用引擎执行此重定向?
当我在我的机器上使用 docker 在本地测试它时,一切都很顺利。
提前致谢!
【问题讨论】:
标签: google-app-engine ssl tomcat https google-cloud-platform