Onion-Location је једноставан начин да се рекламира онион сајт корисницима. Можете или конфигурисати веб сервер да приказује Onion-Location заглавље или додати HTML <meta> атрибут на веб сајт.

Да би заглавље било важеће, потребно је испунити следеће услове:

  • Вредност Onion-Location мора бити важећи URL са http: или https: протоколом и .onion именом хоста.
  • Веб страница која дефинише Onion-Location заглавље мора бити сервирана преко HTTPS.
  • Веб страница која дефинише Onion-Location заглавље не сме бити онион сајт.

На овој страници, команде за управљање веб сервером су засноване на Debian-у сличним оперативним системима и могу се разликовати од других система. Проверите документацију вашег веб сервера и оперативног система.

Apache

Да бисте конфигурисали ово заглавље у Apache 2.2 или новијем, потребно је да омогућите headers и rewrite модуле и уредите фајл виртуелног хоста веб сајта.

Корак 1. Омогућите headers и rewrite модуле и поново учитајте Apache2

 $ sudo a2enmod headers rewrite

 $ sudo systemctl reload apache2

Ако добијете поруку о грешци, нешто је пошло наопако и не можете наставити док не схватите зашто ово није функционисало.

Корак 2. Додајте Onion-Location заглавље у вашу конфигурацију виртуелног хоста

Header set Onion-Location "http://your-onion-address.onion%{REQUEST_URI}s"

Где је your-onion-address.onion Онион Услуга адреса коју желите да преусмерите и {REQUEST_URI} је компонента путање траженог URI, као што је "/index.html".

Пример виртуелног хоста:

     <VirtualHost *:443>
       ServerName <your-website.tld>
       DocumentRoot /path/to/htdocs

       Header set Onion-Location "http://your-onion-address.onion%{REQUEST_URI}s"

       SSLEngine on
       SSLCertificateFile "/path/to/www.example.com.cert"
       SSLCertificateKeyFile "/path/to/www.example.com.key"
     </VirtualHost>

Корак 3. Поново учитајте Apache

Поново учитајте apache2 сервис, тако да ваше конфигурационе промене ступе на снагу:

 $ sudo systemctl reload apache2 

Ако добијете поруку о грешци, нешто је пошло наопако и не можете наставити док не схватите зашто ово није функционисало.

Корак 4. Тестирање вашег Onion-Location

Да бисте тестирали да ли Onion-Location ради, преузмите HTTP заглавља веб сајта, на пример:

 $ wget --server-response --spider your-website.tld

Потражите onion-location унос и адресу Онион Услуге. Или отворите веб сајт у Тор претраживачу и љубичаста пилула ће се појавити у адресној траци.

Nginx

Да би конфигурисао Onion-Location заглавље, оператор услуге треба прво да конфигурише Онион услугу.

Корак 1. Направите Онион услугу постављањем следећег у torrc:

HiddenServiceDir /var/lib/tor/hs-my-website/
HiddenServiceVersion 3
HiddenServicePort 80 unix:/var/run/tor-hs-my-website.sock

Корак 2. Уредите конфигурациони фајл веб сајта

У /etc/nginx/conf.d/<your-website>.conf додајте Onion-Location заглавље и адресу Онион Услуге. На пример:

    add_header Onion-Location http://<your-onion-address>.onion$request_uri;

Конфигурациони фајл са Onion-Location треба да изгледа овако:

server {
    listen 80;
    listen [::]:80;

    server_name <your-website.tld>;

    location / {
       return 301 https://$host$request_uri;
    }

}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name <your-website.tld>;

    # managed by Certbot - https://certbot.eff.org/
    ssl_certificate /etc/letsencrypt/live/<hostname>/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/<hostname>/privkey.pem;

    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    add_header Onion-Location http://<your-onion-address>.onion$request_uri;

    # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    access_log /var/log/nginx/<hostname>-access.log;

    index index.html;
    root /path/to/htdocs;

    location / {
            try_files $uri $uri/ =404;
    }
}

server {
        listen unix:/var/run/tor-hs-my-website.sock;

        server_name <your-onion-address>.onion;

        access_log /var/log/nginx/hs-my-website.log;

        index index.html;
        root /path/to/htdocs;
}

Корак 3. Тестирајте конфигурацију веб сајта

 $ sudo nginx -t

Веб сервер треба да потврди да нова синтакса ради:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Корак 4. Поново покрените nginx

 $ sudo nginx -s reload

Ако добијете поруку о грешци, нешто је пошло наопако и не можете наставити док не схватите зашто ово није функционисало.

Корак 5. Тестирање вашег Onion-Location

Да бисте тестирали да ли Onion-Location ради, преузмите HTTP заглавља веб сајта, на пример:

 $ wget --server-response --spider your-website.tld

Потражите onion-location унос и адресу Онион Услуге. Или отворите веб сајт у Тор претраживачу и љубичаста пилула ће се појавити у адресној траци.

Caddy

Caddy подразумевано има аутоматски HTTPS, тако да обезбеђује ваш TLS сертификат и брине о преусмеравању HTTP на HTTPS за вас. Ако користите Caddy 2, да бисте укључили Onion-Location заглавље, додајте следећу декларацију у ваш Caddyfile:

header Onion-Location http://<your-onion-address>.onion{path}

Ако покрећете статички сајт и имате онион адресу у $TOR_HOSTNAME променљивој окружења, ваш Caddyfile ће изгледати овако:

your-website.tld

header Onion-Location http://{$TOR_HOSTNAME}{path}
root * /var/www
file_server

Тестирање: Тестирајте са:

 $ wget --server-response --spider your-website.tld

Потражите onion-location унос и адресу Онион Услуге. Или, отворите веб сајт у Тор претраживачу и љубичаста пилула ће се појавити у адресној траци.

Коришћење HTML <meta> атрибута

Идентично понашање Onion-Location укључује опцију дефинисања као HTML <meta> http-equiv атрибут. Ово могу користити веб сајтови који преферирају (или морају) да дефинишу Onion-Location модификујући сервирани HTML садржај уместо додавања новог HTTP заглавља. Onion-Location заглавље би било еквивалентно <meta http-equiv="onion-location" content="http://<your-onion-service-address>.onion" /> додатом у HTML head елемент веб странице. Замените <your-onion-service-address.onion> са Онион Услугом коју желите да преусмерите.

Ограничења

HTML не може да прочита тражени URL и убаци га динамички у http-equiv <meta> ознаку. Из тог разлога, посетиоци ће увек бити преусмерени на .onion URL наведен у content делу meta ознаке, без обзира на то на којој подстраници се налазе.

Стога, ако је могуће, препоручујемо коришћење једног од горе наведених метода.

Више информација

Прочитајте Onion-Location спецификацију.