【发布时间】:2022-01-20 15:44:22
【问题描述】:
我有一个与 Nginx 一起 dockerized 的 react 应用程序
### First Stage ###
FROM node:alpine AS builder
WORKDIR /usr/src/app
COPY ./package.json ./
COPY ./yarn.lock ./
RUN yarn install
COPY . .
RUN yarn build
### Second Stage ###
FROM nginx:alpine
ARG NGINXFILE
COPY ${NGINXFILE} /etc/nginx/conf.d/nginx.conf
COPY --from=builder /usr/src/app/build/ /usr/share/nginx/html
EXPOSE 80
EXPOSE 443
这是 Nginx.conf
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
location / {
try_files $uri $uri/ /index.html;
}
# 404 if a file is requested (so the main app isn't served)
location ~ ^.+\..+$ {
try_files $uri =404;
}
}
然后,在 docker-compose 文件中,端口 80 映射到 80
react-app:
image: react-app-production:${ENV}
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./data/certs:/etc/nginx/certs
networks:
- mern-app
在服务器端,ufw 设置为通过端口 80 的所有 TCP 流量
80/tcp ALLOW FWD Anywhere
80/tcp (v6) ALLOW FWD Anywhere (v6)
我可以看到应用正在监听端口 80
docker-pr 16278 root 4u IPv4 92410 0t0 TCP *:80 (LISTEN)
docker-pr 16283 root 4u IPv6 92129 0t0 TCP *:80 (LISTEN)
但是这个应用程序无法通过浏览器或被 ping 访问。
【问题讨论】:
-
您要连接到哪个 URL?你得到什么回应?在标签中暗示 AWS;亚马逊安全组是这里的潜在考虑因素吗?
-
@DavidMaze 安全组允许来自 0.0.0.0/0 的端口 80 上的 HTTP/TCP,我正在尝试访问服务器的公共 IPV4。没有响应 ping 丢失 100%
标签: amazon-web-services docker nginx firewall ufw