我已经在网上搜索了一天以上相同类型的问题,并且几乎尝试了所有解决方案,但是我无法找到解决方案。
情况:我有一个域,其A记录指向我的公共IP地址,运行Windows Server 2012 R2。在端口80上我有nginx代理http请求(我们现在不关心https)。 nginx会将请求代理到apache虚拟主机,apache本身在端口9090上运行。
我们运行的应用程序在前端有Angular 4,在后端有Laravel 5.6,但是,由于Angular 4的httpClient在发送我们想要用于文件上传的multipart / form-data请求时遇到了一些问题,我们使用了plain XHR用于POST和PUT请求。
另外我需要提一下,我已经使用这个link从网站上新下载了预构建包,即我没有使用源代码构建它。
实际行为:使用上述设置发送此类POST和PUT请求时,我们无法从服务器获得响应。我们也有以下状态:
期望的行为,我们想要的东西:我们应该能够发送带有POST和PUT请求的文件,就像GET等其他任何方法一样。
码
nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
sendfile on;
server_names_hash_bucket_size 64;
proxy_redirect 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;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
server {
proxy_request_buffering off;
server_name myhost.net;
location / {
proxy_pass http://myhost.local:9090;
}
}
}
Apache vhost config:
<VirtualHost *:9090>
DocumentRoot "C:/path/to/htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:9090>
DocumentRoot "C:/path/to/htdocs/myhost/public"
ServerName myhost.local
ServerAlias myhost.net
ErrorLog "C:/path/to/apache/logs/vhosts/myhost.local-error.log"
</VirtualHost>
Windows主机文件,虽然我认为它不重要: 127.0.0.1 myhost.local :: 1 myhost.local
正如我在域DNS中提到的那样, myhost.net
被路由到公共IP。
如果我错过了什么,请告诉我。
我找到了这个问题。防火墙,无论是Windows服务器防火墙还是网络防火墙都会阻止流如果我同时关闭两个防火墙它可以正常工作,但是,它们中的任何一个都打开了,只有当我们允许HTTP或HTTPS流量时,我们才会遇到同样的问题。
这证明nginx和laravel配置很好,但是,仍然存在一个问题,即防火墙阻止它们的请求有什么问题?