#php #nginx #hhvm
#php #nginx #hhvm
Вопрос:
У меня очень странная проблема. Мои серверы подключаются к моему api через proxypass.
server {
listen 80;
server_name www.example.com;
location / {
root /data/sites/www.example.com/public_html/;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?rt=$uriamp;$args;
}
location /api {
proxy_pass_header Set-Cookie;
proxy_pass_header P3P;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Fowarded-Host $host;
proxy_set_header X-Real-IP $remote_addr;
port_in_redirect off;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_pass https://api.example.com/;
proxy_connect_timeout 60;
}
location ~ .php$ {
root /data/sites/www.example.com/public_html/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param ENV production;
fastcgi_param HTTPS off;
fastcgi_read_timeout 300;
}
}
Итак, URL www.example.com/api является ли прокси-сервер пропуском к api.example.com . Но время ожидания соединения всегда истекает. Теперь, если я перейду к api.example.com прямо в моем браузере это РАБОТАЕТ!
Итак, я сбит с толку. У кого-нибудь есть идеи, что может происходить?
Ответ №1:
Если api.example.com
это DNS-имя, а не upstream
метка, возможно, потребуется добавить оператор распознавания, чтобы предоставить nginx
доступ к DNS.
resolver 8.8.8.8;
proxy_pass https://api.example.com/;
Подробности см. В этом документе.