我在服务器的 8082 端口上运行了一个 python jsonrpc 服务。
我想通过 php jsonRPCClient 访问它。(并且必须是 https)
我的 nginx 服务器如下所示:
server {
listen 443;
server_name service.mydomain.com;
ssl on;
ssl_certificate /path/to/crt/domain.crt;
ssl_certificate_key /path/to/crt/domain.key;
keepalive_timeout 70;
access_log /var/log/nginx/domain.access.log;
error_log /var/log/nginx/domain.error.log;
location / {
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://127.0.0.1:8082;
}
}
当我在浏览器中输入:https://service.mydomain.com然后我就能看到服务的正确结果。
但如果我用如下 php 代码调用它:
$rpc = new jsonRPCClient("https://service.mydomain.com");
return $rpc->create_client($client_id);
然后我就无法使用它了……而且从服务日志来看,这次请求从未到达服务。
任何关于如何解决这个问题的想法都将非常宝贵。
谢谢
(注:密钥是自签名证书,如果它改变了一些东西)
端口 80 默认 nginx 设置是
server {
listen 80 default;
server_name www.mydomain.com;
access_log /var/log/nginx/localhost.access.log;
location / {
proxy_pass http://127.0.0.1:81;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Port 80;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 0;
}
}
443端口nginx设置如下:
server {
listen 443;
server_name www.mydomain.com;
ssl on;
ssl_certificate /path/to/crt/domain.crt;
ssl_certificate_key /path/to/crt/domain.key;
keepalive_timeout 70;
access_log /var/log/nginx/domain.access.log;
error_log /var/log/nginx/domain.error.log;
location / {
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://127.0.0.1:81;
}
}
该网站由 apache 在 81 端口上提供服务:
<VirtualHost *:81>
ServerName www.mydomain.com
DocumentRoot "/var/www/domain"
DirectoryIndex index.php
<Directory "/var/www/domain>
AllowOverride All
Allow From All
</Directory>
</VirtualHost>