На данный момент я обслуживаю свой статический контент (jpg, png, css) с mydomain.com следующим образом:
location ~* \.(jpg|jpeg|gif|css|png|js|ico)$ {
root /home/www/mydomain/current/web;
add_header Cache-Control public;
expires 365d;
access_log off;
}
Я бы хотел, чтобы он работал со static.mydomain.com, чтобы он не содержал файлов cookie и имел лучшую производительность.
Что лучше? Добавьте новый раздел сервера в мою конфигурацию nginx vhost примерно так:
server {
listen 192.168.2.25:80;
server_name static.mydomain.com;
root /home/www/mydomain/current/web;
location / {
return 404;
}
location ~ \.(?:jpg|css|gif|png|swf|ico|mp3)$ {
add_header Cache-Control public;
}
}
Или прокси-передайте такой запрос динамического контента (например, вики nginx):
server {
listen 192.168.2.25:80;
server_name www.mydomain.com;
# serve static files
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
root /var/www/virtual/big.server.com/htdocs;
expires 30d;
}
# pass requests for dynamic content to rails/turbogears/zope, et al
location / {
proxy_pass http://127.0.0.1:8080;
}
}
Спасибо за советы.
Ваше решение proxy_pass не приведет к созданию домена без файлов cookie. Ваш динамический контент установит файлы cookie на www.mydomain.com, и вы вернетесь туда, откуда начали (но с дополнительной ненужной задержкой).
Первое решение является лучшим из двух, но лучшим может быть что-то вроде Amazon CloudFront CDN с источником www.mydomain.com для статического контента.
Использование proxy-pass несколько увеличит нагрузку на сервер, потому что каждое соединение для динамического контента сначала будет проходить через прокси, а затем второй раз обрабатываться реальным сервером. Так что, если у вас возникли какие-либо проблемы с нагрузкой, я бы порекомендовал первое решение.
Nginx vhost - лучшая идея, но Varnish - это то, на что вам стоит обратить внимание.