我看不出这个 NGINX 服务器配置有什么问题。我在端口 8081 上运行 tomcat 服务器,在 8080 上运行 jboss,并且 NGINX 在端口 80 上监听。我正在向端口 80 发送一个 ajax 请求,并希望将其通过 proxy_pass 发送到 jboss 服务器。webapp 在端口 8081 上运行,请求正在发送到端口 80:
server {
listen 80;
server_name example1.com;
root /home/login/users1;
access_log /home/nginx/example1/log/access.log;
error_log /home/nginx/example1/log/error.log;
location /login {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'Content-Type,Accept';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.xx.xxx:8080/path/to/api/user/login;
}
}
控制台输出是:
OPTIONS http://192.168.xx.xxx/home/login/users1 405 (Not Allowed) jquery.js:8102
XMLHttpRequest cannot load http://192.168.xx.xxx/home/login/users1. Origin http://192.168.xx.xxx:8081 is not allowed by Access-Control-Allow-Origin.
AJAX 请求:
$.ajax( {
url : 'http://192.168.xx.xxx/home/login/users1/login',
type : 'post',
contentType : 'application/json',
success : function(data) {
args.success(data);
},
data : args.data,
error : args.error,
crossDomain: true
});
我看过这个类似的帖子,但我没有看到问题,因为我设置了 add_header 'Access-Control-Allow-Origin' '*';有什么想法吗?
谢谢,
J