我的设置:
运行 php 聊天功能的 apache 2.22 虚拟主机可通过 chat.mydomain.nl 访问。 根文件夹/var/www/NEWchat/。
Node js 服务器不提供任何 Web 内容,但用于传递信息和信号。 Node js 服务器的名称为 server.js,监听端口 1900 并驻留在/var/www/socket 的文件夹中。
我只是希望能够代理客户端向套接字服务器发出的请求。 在客户端的 javascript 中,socketserver 的地址是: socket = io.connect(' http://mydomain.nl:1900 ');
无需代理即可正常工作!
然后我编辑运行网站 chat.mydomain.nl 的虚拟主机上的指令,例如:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
documentRoot /var/www/NEWchat
<Directory "/var/www/NEWchat">
allow from all
Options +Indexes
</Directory>
ServerName chat.mydomain.nl
Alias /uploads /var/uploads
ErrorLog /var/mydomainlog/log.log
LogLevel emerg
SSLEngine off
SSLCertificateFile /etc/letsencrypt/live/chat.mydomain.nl/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/chat.mydomain.nl/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/chat.mydomain.nl/chain.pem
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /socket http://localhost:1900
ProxyPassReverse /socket http://localhost:1900
<Location /socket >
Order allow,deny
Allow from all
</Location>
重新启动 apache 并从客户端指向:
socket = io.connect(' http://chat.mydomain.nl:1900 ');
我得到的是:
“请求的资源上不存在‘Access-Control-Allow-Origin’ header ”
最佳答案
通过创建一个单独的 Vhost 作为 Node js 的代理来解决这个问题。将其命名为 socket.mydomain.nl 并且一切正常
关于node.js - Apache 托管 php 网站和 Node js CORS 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34097491/