首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Nginx cors设置在docker容器中不起作用

Nginx cors设置在docker容器中不起作用
EN

Stack Overflow用户
提问于 2019-02-22 03:55:29
回答 1查看 10.3K关注 0票数 0

我正在尝试通过docker compose在.net服务器上部署前端(angular )和后端( linux )。我已经在各自的文件中创建了两个docker文件。这是我的docker.compos.yml文件。

version: '3.4 
  volumes: 
   data:

services:
  api:
    build:
      context: .
      dockerfile: Backend/Dockerfile
    ports:
      - "5000:80"
    depends_on:
      - db
  web:
    build:
      context: .
      dockerfile: Frontend/Dockerfile
    ports:
     - "80:80"
    depends_on:
      - api
  db:
    image: postgres:latest
    volumes: 
     - data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "docker_Password"
      POSTGRES_DB: "database_name"
    ports:
      - "5432:5432"

我使用nginx镜像为前端构建提供服务。这是包含基本设置的default.conf文件。

server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
}

有了上面的配置,我运行了docker-compose up --build,我可以看到我的登录页面(因为端口80是暴露的,所以我的url就是我的服务器ip)。但是当我尝试登录时,它会向运行在端口5000上的api服务发送一个ajax请求,而当我的前端运行在端口80上并试图访问运行在端口5000上的服务时,我得到了跨域错误。我想做一些事情,让我所有以api path开头的请求(在我的例子中是{server_ip}/api/login) )应该重定向到api服务。在nginx中有什么对请求重定向有帮助的东西吗?

我还尝试在default.conf,的location块中添加以下代码行,但没有成功。

add_header‘访问-控制-允许-来源’'*';

add_header‘访问控制允许方法’'GET,POST,OPTIONS‘

EN

回答 1

Stack Overflow用户

发布于 2019-02-22 04:35:55

尝试将以下内容添加到nginx配置中,以便它将所有/api/login请求转发到http://api:5000/

location /api/login {
  proxy_pass http://api:5000;
}

您也可以使用rewrite让nginx调用不带/api/login前缀的API服务器。

location /api/login {
  rewrite ^/api/login/(.*) /$1 break;
  proxy_pass http://api:5000;
}

CORS头可能无法工作,因为nginx会返回它们,但您需要API服务器来返回它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54815228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档