当前位置: 首页 > news >正文

使用Nginx解决跨域问题

 前言:

        项目是公司的老项目,只有部署在服务器上的时候,项目才可以正常运行(接口是通的);现在需求:在现有的项目代码上进行修改,请求接口是第三方给的。接口是正常的,通过Ajax进项请求,存在跨域问题。然后就进行了Nginx反向代理的摸索操作,,,

原理:

Nginx是一个高性能的开源Web服务器反向代理服务器。它的代理功能是通过反向代理实现的。

Nginx的代理原理是将客户端请求转发给后端服务器,并将后端服务器的响应返回给客户端。它作为中间层存在接收客户端的请求,并根据配置规则将请求转发给后端服务器

具体的代理过程如下:

  1. 客户端发送请求到Nginx服务器。
  2. Nginx根据配置规则,确定请求需要被代理到哪个后端服务器。
  3. Nginx将请求转发给后端服务器。
  4. 后端服务器处理请求,并生成响应。
  5. 后端服务器将响应返回给Nginx。
  6. Nginx将后端服务器的响应返回给客户端。

通过这种方式,Nginx实现了反向代理功能。它可以隐藏后端服务器的真实IP地址和其他信息,起到负载均衡、缓存加速、安全过滤等作用。同时,Nginx的高性能和高并发能力也使得它成为一个常用的代理服务器解决方案。 

 步骤:

一、配置环境

  1、下载安装Nginx  nginx: download

  2、查看是否安装成功  

  •  找到nginx的安装目录

二、修改配置文件

找到nginx.conf配置文件(路径:nginx-1.24.0 ==> conf ==>nginx.conf),进行文件修改 

 配置代码如下:

server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;proxy_pass http://192.168.1.149:8080/;proxy_set_header Host $http_host;}location  /apis {proxy_pass http://14.18.99.55:8846/core/v3;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#

三、重启nginx 

修改完配置文件需重启nginx

nginx.exe -s reload

四、访问项目 

没有配置Nginx之前,访问项目地址是 http://192.168.1.149:8080/znwd/index.html

配置完Nginx后,访问项目地址变成 http://localhost/znwd/index.html 

Ajax请求:

 五、遇到问题

  1.  重启Nginx时报错                                                                                                                     nginx: [error] CreateFile() "D:\nginx-1.24.0\nginx-1.24.0/logs/nginx.pid" failed                        解决方式:执行nginx -c conf/nginx.conf命令创建logs/nginx.pid文件,然后关闭命令指向窗口,在nginx目录下重新cmd打开命令执行窗口,输入nginx.exe -s reload 命令,不再报错。
  2.  重启项目后,接口报404错误(百度结果是:查看80端口是否被占用,如果被占用,杀死占用80端口的进程);根据搜索结果进行操作,80端口没有被占用,报错原因是修改文件时,本地项目地址proxy_pass http://192.168.1.149:8080;忘记了在8080后添加'/'

 六、补充

Nginx常用命令: 

    nginx -v : 查看版本号

    nginx -t:验证配置是否正确

    start -s stop:快速停止或关闭Nginx

    nginx -s reload:配置文件修改后重装载命令

http://www.lryc.cn/news/126886.html

相关文章:

  • 在 OpenCV 中使用深度学习进行年龄检测-附源码
  • 【BASH】回顾与知识点梳理(三十一)
  • Linux 终端命令之文件浏览(3) less
  • 【精通性能优化:解锁JMH微基准测试】一基本用法
  • .Net程序调试时接受外部命令行参数方式
  • Mariadb高可用MHA (四十二)
  • Vue3 setup中使用$refs
  • 什么是React的上下文(Context)?如何使用和传递上下文信息?
  • CentOS Linux 78安全基线检查
  • Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】
  • Kubernetes 企业级高可用部署
  • 8.1 C++ STL 变易拷贝算法
  • 攻击LNMP架构Web应用
  • 深度学习入门-3-计算机视觉-图像分类
  • shopee运营新手入门教程!Shopee运营技巧!
  • Python Web框架:Django、Flask和FastAPI巅峰对决
  • 机器学习线性代数基础
  • PyQt5组件之QLabel显示图像和视频
  • 微信程序 自定义遮罩层遮不住底部tabbar解决
  • Python简易部署方法
  • Spring Boot单元测试与Mybatis单表增删改查
  • 机器学习样本数据划分的典型Python方法
  • 重建与突破,探讨全链游戏的现在与未来
  • [C++] 模板template
  • [vite] 项目打包后页面空白,配置了base后也不生效
  • springboot整合kafka-笔记
  • Rust软件外包开发语言的特点
  • Spring Boot业务代码中使用@Transactional事务失效踩坑点总结
  • 知识体系总结(九)设计原则、设计模式、分布式、高性能、高可用
  • Springboot 集成Beetl模板