在使用kubectl部署服务+ pod并根据URL进行卷曲之后,我不断收到此消息
HTTP/1.1 301 Moved Permanently
Connection: keep-alive
Content-Length: 70
Content-Type: text/plain; charset=utf-8
Date: Wed, 21 Aug 2019 04:08:26 GMT
Location: https://<URL>
Vary: Accept
X-Powered-By: Express
Moved Permanently. Redirecting to https://<URL>
我正在像这样卷曲
http https://<URL>
使用CURL时的结果是相同的。
这是我的服务器代码的样子
const sslOptions = {
key: privKeyData,
cert: certData,
ca: chainData
};
http
.createServer(app)
.listen(PORT, () =>
console.log(`listening on port ${PORT}`)
);
https
.createServer(sslOptions, app)
.listen(443, () =>
console.log("listening on port 443");
);
证书是正确的(并且来自S3,我没有发布该代码)。检查我的Pod日志时,我还会看到两个控制台日志,提示服务器运行正常。
这是我的k8s文件的样子
kind: Service
apiVersion: v1
metadata:
name: <PROJECT>-api
labels:
app: <PROJECT>-api
annotations:
# Note that the backend talks over HTTP.
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
# TODO: Not comfortable with this being in code - TODO: move this into a circleci environment variable
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: <CERTIFICATE_ARN>
# Only run SSL on the port named "https" below.
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
spec:
type: LoadBalancer
selector:
app: <PROJECT>-api
ports:
- port: 443
targetPort: 3000
protocol: TCP
name: https
- port: 80
targetPort: 3000
protocol: TCP
name: http
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: <PROJECT>-api
labels:
app: <PROJECT>-api
spec:
replicas: 1
selector:
matchLabels:
app: <PROJECT>-api
template:
metadata:
labels:
app: <PROJECT>-api
spec:
containers:
- name: <PROJECT>-api
image: <IMAGE_NAME>
imagePullPolicy: Always
env:
- name: VERSION_INFO
value: "1.0"
- name: BUILD_DATE
value: "1.0"
ports:
- containerPort: 3000
服务器代码在EC2实例中可以正常工作。我无法在本地进行检查,因为我的证书与我的域而不是本地主机关联。
也许可以很轻松地得到一个明确的答案-但是任何指针都将非常有帮助。