Onion-Location یک راه آسان برای تبلیغ یک سایت Onion به کاربران است.
میتوانید یک سرور وب را برای نشاندادن سرآیند Onion-Location پیکربندی کنید یا یک مشخصهٔ HTML <meta>
در وبسایت اضافه کنید.
برای معتبربودن سرآیند شرایط زیر باید برآورده شود:
- مقدار Onion-Location باید یک URL معتبر با پروتکل http: یا https: و نام میزبان onion. باشد.
- صفحه وبی که سرآیند Onion-Location را تعریف میکند باید از طریق HTTPS ارائه شود.
- صفحه وبی که سرآیند Onion-Location را تعریف میکند نباید یک سایت Onion باشد.
در این صفحه، دستورها برای مدیریت سرور وب مبتنی بر سیستمعاملهای شبیه به دبیان است و ممکن است با سیستمهای دیگر متفاوت باشد.
مستندات سرور وب و سیستمعامل خود را بررسی کنید.
Apache
برای پیکربندی این سرآیند در Apache 2.2 یا بالاتر، نیاز دارید ماژولهای headers
و rewrite
را بهکار انداخته و فایل Virtual Host وبسایت را ویرایش کتید.
گام ۱. سرآیندها را بهکار اندازید و ماژولها را بازنویسی کرده و Apache2 را مجدداً بارگذاری کنید
$ sudo a2enmod headers rewrite
$ sudo systemctl reload apache2
اگر پیغام خطایی دریافت کردید، مشکلی رخ داده است و تا زمانی که متوجه علت عدم کارکرد آن نشدهاید، نمیتوانید ادامه دهید.
گام ۲. سرآیند Onion-Location را به فایل پیکربندی میزبان مجازی خود اضافه کنید
Header set Onion-Location "http://your-onion-address.onion%{REQUEST_URI}s"
جایی که your-onion-address.onion
نشانی سرویس Onion است که میخواهید تغییر مسیر دهید و {REQUEST_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>
گام ۳. Apache را مجدداً بارگذاری کنید
سرویس apache2 را دوباره بارگذاری کنید تا تغییرات پیکربندی شما اعمال شود:
$ sudo systemctl reload apache2
اگر پیغام خطایی دریافت کردید، مشکلی رخ داده است و تا زمانی که متوجه علت عدم کارکرد آن نشدهاید، نمیتوانید ادامه دهید.
گام ۴. آزمودن Onion-Location
برای آزمودن اینکه آیا Onion-Location کار میکند یا خیر، سرآیندهای HTTP وبسایت را واکشی کنید، برای مثال:
$ wget --server-response --spider your-website.tld
بهدنبال ورودی onion-location
و نشانی سرویس Onion بگردید.
یا وبسایت را در مرورگر Tor باز کنید و یک قرص بنفش در نوار نشانی ظاهر میشود.
Nginx
برای پیکربندی سرآیند Onion-Location، اپراتور سرویس باید ابتدا یک سرویس Onion را پیکربندی کند.
گام ۱. با تنظیم موارد زیر در torrc
یک سرویس Onion ایجاد کنید:
HiddenServiceDir /var/lib/tor/hs-my-website/
HiddenServiceVersion 3
HiddenServicePort 80 unix:/var/run/tor-hs-my-website.sock
گام ۲. فایل پیکربندی وبسایت را ویرایش کنید
در /etc/nginx/conf.d/<your-website>.conf
سرآیند Onion-Location و نشانی سرویس Onion را اضافه کنید.
برای مثال:
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;
}
گام ۳. پیکربندی وبسایت را بیازمایید
$ sudo nginx -t
سرور وب باید تأیید کند که ترکیب جدید بهدرستی کار میکند:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
گام ۴. nginx را دوباره راهاندازی کنید
$ sudo nginx -s reload
اگر پیغام خطایی دریافت کردید، مشکلی رخ داده است و تا زمانی که متوجه علت عدم کارکرد آن نشدهاید، نمیتوانید ادامه دهید.
گام ۵. آزمودن Onion-Location
برای آزمودن اینکه آیا Onion-Location کار میکند یا خیر، سرآیندهای HTTP وبسایت را واکشی کنید، برای مثال:
$ wget --server-response --spider your-website.tld
بهدنبال ورودی onion-location
و نشانی سرویس Onion بگردید.
یا وبسایت را در مرورگر Tor باز کنید و یک قرص بنفش در نوار نشانی ظاهر میشود.
Caddy
Caddy بهطور پیشفرض دارای ویژگی HTTPS خودکار است، بنابراین گواهی TLS شما را تدارک دیده و با تغییر مسیر HTTP به HTTPS از شما مراقبت میکند.
اگر از Caddy 2 استفاده میکنید، برای اضافهکردن سرآیند Onion-Location، بیانیه زیر را در Caddyfile خود اضافه کنید:
header Onion-Location http://<your-onion-address>.onion{path}
اگر یک سایت ایستا را اجرا میکنید و نشانی Onion را در متغیر محیطی $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
و نشانی سرویس Onion بگردید.
یا وبسایت را در مرورگر Tor باز کرده و یک قرص بنفش در نوار نشانی ظاهر میشود.
استفاده از مشخصهٔ 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>
را با سرویس Onion که میخواهید تغییر مسیر دهید جایگزین کنید.
محدودیتها
HTML نمیتواند نشانی درخواستی را بخواند و آن را بهصورت پویا در تگ http-equiv <meta>
وارد کند.
به همین دلیل، بازدیدکنندگان همیشه به نشانی .onion مشخصشده در قسمت محتوای برچسب متا هدایت میشوند، صرف نظر از اینکه در کدام صفحهٔ فرعی هستند.
بنابراین در صورت امکان توصیه میکنیم از یکی از روشهای فوق استفاده کنید.
اطلاعات بیشتر
مشخصات Onion-Location را بخوانید.