如果要用Nginx解决前后端的跨域问题,这里的端口填写应该写8083吗?

如果要用Nginx解决前后端的跨域问题,这里的端口填写应该写8083吗?

docker run -d -p 8088:80 nginx

是不是应该换成我们网关的端口,如下:

docker run -d -p 8083:80 nginx

因为我发现按照视频的方式启动docker容器后并没有解决前后端的跨域问题,难道还是要专门写一个全局配置类吗?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2024-04-10 17:57:10

同学你好,1、同学根据我们项目端口号进行调整就好,如果同学项目是8083端口,则进行修改即可。

2、如果按照视频方式启动Nginx容器后没有解决跨域问题,可能是因为Nginx配置中没有正确设置CORS头部。建议在Nginx配置文件中添加适当的add_header指令来允许跨域请求。例如:

server {
    listen 80;

    location / {
        # 允许所有来源进行跨域请求
        add_header Access-Control-Allow-Origin *;

        # 如果需要,可以指定具体的来源
        # add_header Access-Control-Allow-Origin http://your-frontend-origin.com;

        # 允许的请求方法
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";

        # 允许携带的请求头
        add_header Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range";

        # 对于预检请求,直接返回204状态码,不执行后续处理
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'jwt_token,Keep-Alive,User-Agent,Authorization,DNT,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'Content-Type' 'text/plain charset=UTF-8';
            add_header 'Content-Length' 0;
            return 204;
        }

        # 其他配置...
    }
}

3、在Docker中运行Nginx,同学可以使用docker exec命令来重新加载配置,例如:然后重新测试试一下

bashdocker exec -it <nginx-container-id> nginx -s reload

祝学习愉快!

  • 提问者 ZedC1ang #1

    docker run -d -p 8083:80 nginx

    更改了docker接口之后,Gateway网关启动后报错,显示8083被占用怎么办呢?

    Description:
    Web server failed to start. Port 8083 was already in use.
    
    Action:
    Identify and stop the process that's listening on port 8083 or configure this application to listen on another port.

    Nginx配置文件也是按照上面这么处理的,现在该怎么解决呢?

    2024-04-11 18:56:31
  • 好帮手慕小尤 回复 提问者 ZedC1ang #2

    同学你好,8083端口被占用了,如下尝试下方两种方式试一下

        1)找到占用8083的进程,然后杀掉该进程。如下所示:

    sudo lsof -i :8083  #找到占用8083的进程
    kill -9 [PID]   #杀掉该进程

        2) 尝试修改项目端口号。

    祝学习愉快!

    2024-04-12 09:11:35
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java工程师 2024版
  • 参与学习       2020    人
  • 提交作业       1249    份
  • 解答问题       1203    个

2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师