问题背景:
本地服务由Nginx和php提供,有两个本地域名,分别为test.com、api.test.com,需要test.com通过curl向api.test.com发起请求获取数据,结果一直超时。
网上查找发现是由以下原因造成的:
Nginx处理PHP请求的端口都在9000,Windows下Nginx+php的环境不支持并发请求,当同时访问多个域名,并且同时指向你本地服务的时候,就不支持并发了。(Linux、Mac没有这个问题)
解决办法:很简单,只需要将两个域名对应的Nginx处理请求端口改为不同即可,具体如下:
1、比如test.com用的9000端口,我们将api.test.com改为9001。打开vhosts.conf中
- location ~ \.php(.*)$ {
- fastcgi_pass 127.0.0.1:9001;
- ......
- }
里面的
- fastcgi_pass 127.0.0.1:9000;
改为:
- fastcgi_pass 127.0.0.1:9001;
2、重启WNMP服务,新建一个php-cgi进程,新进程端口须与上一步修改的相同:
打开cmd,切换到PHP安装路径下(对于没有配置PHP环境变量的),执行:
- php-cgi.exe -b 127.0.0.1:9001
打开任务管理器可以看到有两个正在运行的php-cgi.exe。
在此基础上,就会发现test.com请求api.test.com不会再超时了!
参考博客:https://blog.csdn.net/qq_27517377/article/details/86022091,https://www.cnblogs.com/dcb3688/p/4608003.html