Nginx - Настройка виртуального хоста для URL-адреса основного веб-сайта в отдельные каталоги

Только что переместил свой веб-сайт с IIS на Linux (LEMP на Ubuntu Server 16.04)

Я все еще изучаю Linux, и я не уверен, как добиться следующего:

У меня работает веб-сайт, скажем, www.qwerty.com с настроенной для него аналитикой Google. Допустим, это находится в /var/www/html/qwerty.com/public

Я хочу создать виртуальный каталог на этом сайте, чтобы обслуживать 2 отдельные страницы с встроенным видеоплеером и видео.

позволяет сказать :

www.qwerty.com/videos содержит все файлы для показа видео № 1 и находится в /var/www/html/videos[12203 providedwww.qwerty.com/videos/video2 содержит все файлы для показа видео # 2 и находится в / var / www / html / videos / video2

. Я хочу сделать это, поскольку оба URL-адреса этих страниц имеют свой собственный индивидуальный код аналитики Google, поэтому посетители отслеживаются только на этих страницах, а не на всех qwerty. .com.

Добиваюсь ли я этого, используя символические ссылки для каталогов video1 и video 2, указывающие на основной / var / www / html / qwerty. com / public?

Спасибо за вашу помощь

БЛОК СЕРВЕРА ДОБАВЛЕН РЕДАКТИРОВАТЬ

fastcgi_cache_path /var/www/html/qwerty.com/cache levels = 1: 2 keys_zone = QWERTY: 100m inactive = 60m;

сервер {

server_name www.qwerty.com

    root /var/www/html/qwerty.com/public/;  

    index index.php index.html index.htm video.html;

location ~ /\. {
    deny all;
    }

location ~* /(?:uploads|files)/.*\.php$ {
    deny all;
    }

add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Xss-Protection "1; mode=block" always;

location = /robots.txt {
    log_not_found off;
    access_log off;
    }

location = /favicon.ico {
    log_not_found off;
    access_log off;
    }

location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_
    {
        return 444;
    }

location ~* ^.+\.(js|css|swf|xml|txt|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        access_log off;
    log_not_found off;
    expires max;
    }

location ~* \.(pl|cgi|py|sh|lua)\$ {
    return 444;
    }

    location /videos {
            root /var/www/html;
            }

    location /videos/videos2 {
            root /var/www/html;
            }

set $skip_cache 0;

if ($request_method = POST) {
    set $skip_cache 1;
}

if ($query_string != "") {
    set $skip_cache 1;
}

if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
        set $skip_cache 1;
    }

if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}

if ($http_cookie ~* "PHPSESSID"){
    set $skip_cache 1;
}

location / {
    try_files $uri $uri/ /index.php?$args;
}

location /phpmyadmin {
    auth_basic "Admin Login";
    auth_basic_user_file /etc/nginx/allow_phpmyadmin;
}

rewrite /wp-admin$ $scheme://$host$uri/ permanent;

location ~* \.(?:manifest|appcache|html?|xml|json)$ {
    expires -1;
    }

location ~* \.(?:rss|ato)$ {
    expires 1h;
    add_header Cache-Control "public";
    }

location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
    expires 1d;
    add_header Cache-Control "public";
    log_not_found off;
    access_log off;
    }

location ~* \.(?:css|js)$ {
    expires 7d;
    add_header Cache-Control "public";
    }

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_cache_bypass $skip_cache;
    fastcgi_no_cache $skip_cache;
    fastcgi_cache QWERTY;
    fastcgi_cache_valid 60m;
}

location ~ /purge(/.*) {
    fastcgi_cache_purge QWERTY "$scheme$request_method$host$1";
}

}

0
задан 5 December 2016 в 21:33
2 ответа

Способ nginx для этого:

location /videos {
    root /var/www/html;
}

Здесь мы настраиваем другой корневой каталог для nginx для URI, начинающихся с / videos . Поскольку nginx автоматически добавляет видео после каталога, указанного в корне , у нас есть только / var / www / html

.
0
ответ дан 5 December 2019 в 09:07

Просто добавьте блок местоположения в существующий блок сервера. Это может быть не идеально, но должно дать вам хорошую идею.

location /videos/ {
  root /var/www/html/;
}

Добавьте дополнительные блоки местоположения для любых других, которые вам потребуются.

В конечном итоге вам может потребоваться немного более сложная логика сопоставления путей, например, регулярные выражения или подстановочные знаки. Здесь есть хорошее руководство .

0
ответ дан 5 December 2019 в 09:07

Теги

Похожие вопросы