首页 > 解决方案 > 如何使用 nginx 将 Node.js 应用程序重定向到 HTTPS?

问题描述

我在端口 3000 上有一个 Node 应用程序,我试图弄清楚如何将其重定向到 https,以便可以通过 https://localhost:3000/ 而不是 http://localhost:3000 访问它。我目前的设置将 http 重定向到 https,但给了我一个“502 Bad Gateway Error”并且没有显示我的应用程序。任何想法我的设置可能有什么问题?

nginx.conf

server {
  listen 443 ssl;

  ssl_certificate /etc/ssl/server-crt.pem; 
  ssl_certificate_key /etc/ssl/server-key.pem;

  error_page 497 301 =307 https://$host:3000$request_uri;

  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header REQUEST_URI $request_uri;

  location / {
    set $originaddr http://localhost:3000$request_uri;
    proxy_pass $originaddr;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }

}

Dockerfile:

FROM node:latest
WORKDIR /usr/src/app

COPY . ./
RUN npm install
RUN node -v
RUN ls -ltr
EXPOSE 3000
CMD [ "npm", "start" ]

FROM nginx:latest
COPY ./ /usr/share/nginx/html

RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d

COPY ssl/server-*pem /etc/ssl/
CMD ls

EXPOSE 443
CMD ["nginx", "-g", "daemon off;"]

码头工人-compose.yml

services:
  node-app:
    build:
      context: ./my-node-app
      dockerfile: Dockerfile
    container_name: my-node-app
    ports:
      - "3000:443"
    volumes:
      - "./my-node-app/src:/usr/src/app/src"

标签: node.jsdockernginx

解决方案


推荐阅读