Nginx 是一个高性能的 HTTP 和反向代理服务器,也用作邮件代理服务器。跨域是指浏览器为了安全考虑,限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。跨域问题通常发生在前端应用尝试访问不同域名下的后端服务时。
假设我们有两个域名 domain1.com
和 domain2.com
,它们都需要访问 backend.com
的资源。
浏览器的同源策略限制了不同域名之间的直接访问。
在 Nginx 配置文件中添加跨域相关的头信息。以下是一个示例配置:
server {
listen 80;
server_name domain1.com;
location / {
proxy_pass http://backend.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 跨域配置
add_header 'Access-Control-Allow-Origin' 'http://domain1.com';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization';
add_header 'Access-Control-Allow-Credentials' 'true';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
}
}
server {
listen 80;
server_name domain2.com;
location / {
proxy_pass http://backend.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 跨域配置
add_header 'Access-Control-Allow-Origin' 'http://domain2.com';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization';
add_header 'Access-Control-Allow-Credentials' 'true';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
}
}
add_header
:添加跨域相关的头信息。Access-Control-Allow-Origin
:允许访问的源。Access-Control-Allow-Methods
:允许的 HTTP 方法。Access-Control-Allow-Headers
:允许的请求头。Access-Control-Allow-Credentials
:是否允许发送 Cookie。if ($request_method = 'OPTIONS')
:处理预检请求,返回 204 No Content。通过以上配置,domain1.com
和 domain2.com
就可以顺利地访问 backend.com
的资源,解决了跨域问题。
云+社区开发者大会(杭州站)
云+社区技术沙龙[第22期]
云+社区技术沙龙[第27期]
技术创作101训练营
发现教育+科技新范式
Elastic Meetup
云+社区开发者大会 长沙站
腾讯云GAME-TECH游戏开发者技术沙龙
第三期Techo TVP开发者峰会
Techo Day
领取专属 10元无门槛券
手把手带您无忧上云