Я хочу, чтобы прокси мог вернуть все необходимое для правильного возврата того, что необходимо для просмотра http://joelmccune.com
через прокси-сервер NGINX, http://nginx/joel
. То, что у меня есть до сих пор, отлично работает для корня сайта, но когда корень пытается загрузить ресурсы, такие как файлы css, из подкаталогов, клиент не может их разрешить.
Например, в корне сайта файл index.html содержит строку для загрузки внешнего файла css.
<link rel="stylesheet" type="text/css" href="/assets/css/screen.css?v=4a6391e0a5" />
Этот файл находится по адресу ...
http://joelmccune.com/assets/css/screen.css?v=4a6391e0a5
... и я хочу, чтобы прокси распознал шаблон. Чтобы вернуть ресурс по URL ...
http://nginx/joel/assets/css/screen.css?v=4a6391e0a5
Прямо сейчас он не работает, ошибка 404, так как он пытается загрузиться из ...
http://nginx/assets/css/screen.css?v=4a6391e0a5
Очевидно, что существует несколько подкаталогов, и я хочу иметь возможность добавлять больше прокси-серверов, поэтому я пытаюсь понять, как создать универсальный шаблон для этого.
Вот файл конфигурации, который я использую ...
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
# if the request is a referall from //nginx/joel
if ($http_referrer ~* nginx/joel) {
# rewrite the request to be prefixed with //nginx/joel
rewrite ^/?(.*)$ http://nginx/joel/$2 last;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# proxy any requests to /joel to http://joelmccune.com
location /joel {
proxy_pass http://joelmccune.com/;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Вот заголовки ответа от первоначального запроса к корню.
HTTP/1.1 200 OK
Server: nginx/1.12.0
Date: Tue, 23 May 2017 20:56:49 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=db5b717394ddd2681553aed3a5a6d354b1495573008; expires=Wed, 23-May-18 20:56:48 GMT; path=/; domain=.joelmccune.com; HttpOnly
Status: 200 OK
x-powered-by: Express
cache-control: public, max-age=0
vary: Accept-Encoding
X-Ghost-Cache-Status: From Cache
CF-RAY: 363aec8a00b479ff-SEA
Content-Encoding: gzip
Вот заголовки запроса для получения примера ресурса css. Глядя на referer, у меня возникла идея попытаться изолировать последующие запросы ресурсов с помощью rewrite ... идея в настоящее время не работает.
GET /assets/css/screen.css?v=4a6391e0a5 HTTP/1.1
Host: nginx
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept: text/css,*/*;q=0.1
DNT: 1
Referer: http://nginx/joel/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
И вот заголовки ответов из моего примера ресурса, файла css ... очевидно, не дающих особого понимания, кроме подтверждения, что он не загружается.
HTTP/1.1 404 Not Found
Server: nginx/1.12.0
Date: Tue, 23 May 2017 20:56:49 GMT
Content-Type: text/html
Content-Length: 571
Connection: keep-alive
Заранее благодарим вас за любую информацию, которую вы можете предложить. Это беспокоит меня большую часть пары дней.
Примечание. Чтобы проверить и узнать, как все это работает, я использую Vagrant + VirtualBox + Ubuntu + NGINX с измененным файлом моих локальных хостов, чтобы все запросы направлялись на http://nginx
на IP-адрес виртуальной машины. Это должно объяснить структуру URL, подробно описанную выше.