使用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),进行文件修改

配置代码如下:

javascript 复制代码
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

javascript 复制代码
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:配置文件修改后重装载命令

相关推荐
ping某14 小时前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉3 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦3 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
java_cj3 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes