【问题标题】:Access dockerized Nginx访问 dockerized Nginx
【发布时间】: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


【解决方案1】:

问题是EC2 配置不允许HTTP 连接并且总是重定向到HTTPS。我安装了 SSL 证书,问题就解决了。

【讨论】:

    猜你喜欢
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 2022-01-08
    • 2018-04-05
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多