Все знают о том что в Facebook’e есть iframe страницы, но не все знают что Facebook эти страницы запрашивает через POST, а не через GET, как делают все остальные. Поэтому все fb:iframe приложения запрашивая у Nginx’а страницы в ответ будут получать ошибку:
405 "Method Not Allowed"
Это легко игнорировать когда Nginx используется как прокси-сервер, но когда за ним ничего нет, то приходится извращаться и единственным решением оказалось проксирование запросов Nginx в Nginx но на другой порт. Сильно урезанный кусок конфига того как это можно реализовать для отдачи статического контента через POST.
upstream fb_static {
server localhost:8001;
}
server {
listen 443;
server_name _;
error_page 405 =200 @405;
location @405 {
proxy_method GET;
proxy_pass http://fb_static;
}
}
server {
listen 8001;
server_name _;
location / {
root "/var/www/fb";
}
}
После всех этих извращений страницы будут прекрасно отображаться в Facebook’е через fb:iframe. Но этот вариант то что называется overthinking, поэтому не без помощи Rpsl удалось найти намного более компактный вариант без необходимости проксирования запросов.
server {
listen 443;
server_name _;
error_page 405 = $uri;
location / {
root "/var/www/fb";
try_files $uri $uri/index.html /404.html =404;
}
}