尝试了许多不同版本的nginx. conf,但当我输入https://域时,似乎没有任何东西可以减轻经典的连接拒绝页面。
需要注意的是,域名以. dev结尾,不知道这是否重要。
该域名是在google domains上购买的,并且有一个记录Map到一个公共EC2示例,该示例具有正在运行的nginx服务器(在docker容器内)。
nginx.conf:
server {
listen 80;
server_name random.dev www.random.dev;
return 301 https://random.dev$request_uri;
}
server {
listen 443 default_server ssl;
server_name random.dev www.random.dev;
ssl on;
ssl_certificate /etc/ssl/certs/ssl-bundle.crt;
ssl_certificate_key /etc/ssl/private/private.key;
index index.html index.htm;
root /usr/share/nginx/html;
location / {
try_files $uri $uri/ /index.html;
}
}
停靠文件:
FROM node:17.7.1 as builder
WORKDIR /usr/src/app
COPY package*.json /usr/src/app/
RUN npm install
COPY . /usr/src/app/
RUN npm run build
FROM nginx:latest
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d
COPY ./ssl /etc/ssl
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
对接-组合:
version: "3"
services:
ui:
image: <image>
ports:
- 80:80
- 443:443
EC2示例具有Amazon Linux 2风格。
安全组Map似乎是正确的,ssh(22)、http(80)和https(443)接受来自任何地方的入站。
网络ACL为默认值(对所有人开放,包括入站和出站)。
在运行了docker-compose之后,我还尝试使用netstat(在ec2内部,在docker外部)检查80和443是否在监听,它们确实在监听。
当我注解掉443 nginx conf代码时,原始IP(而不是域)上的http已经工作了,但是域不工作,因为. dev和. app自动重定向到chrome上的https(我相信还有firefox)。
考虑到这一点,想知道是否还有人遇到过类似我的问题。这是亚马逊Linux 2的问题,还是. dev的问题,或者可能是SSL的问题?
1条答案
按热度按时间m1m5dgzv1#
进行了一系列更改,但修复似乎与为ec2示例分配弹性IP地址有关。
不知道什么原因,我用的当地wifi(Verizon)总是导致对
ping <ip-address>
上的IP地址的超时请求。(康卡斯特以及ATT移动的数据),IP地址没有被拒绝,这很可能和IP地址被Verizon列入黑名单有关,我不确定是所有静态IP都被列入黑名单还是我们只是运气不好。分配的弹性IP似乎解决了该问题。