NginX: Redirect http requests to https

تو جهان حاضر بعیده کسی دستی تو وب داشته باشه و از خواص امنیتی داشتن SSL آگاه نباشه، امروزه دیگه HTTPS یک نیاز برای سایت‌ها محسوب میشه. برای همین هم سایت‌هایی مثل letsencrypt.org بوجود اومدن تا به افراد بی‌بضاعتی مثل ما که توانایی خرید گواهینامه SSL نداریم کمک کنند. در کل SSL چیز خوبیه که داشته باشیم، البته بگذریم از این که درستش این بود که HTTP وجود نداشت و همه چی HTTPS بود، ولی ما کاری به این کارا نداریم.
اگه گواهینامه معتبری برای دامنه خودتون ندارید پیشنهاد میکنم حتما سری به letsencrypt.org بزنید و یک گواهینام معتبر برای خودتون بگیرید. این گواهینامه‌ها البته محدودیت زمانی دارند ولی تو خود سایت راه رو نشون داده که چجوری خیالتون از منقضی نشدنش راحت بشه.

بعد کلی روده درازی درمورد SSL بریم سراغ کارمون که ربطی به گواهینامه معتبر و اون سایت خوبه که به ما گواهینامه و میده و اینا نداره، کارمون اینه توی nginx که تمامی درخواست‌های http رو به https ری‌دایرکت کنیم.
کار خیلی ساده‌ای هم هست، فقط کافیه چند سطر زیر رو درون تنظیمات سرور خودمون اضافه کنیم. مثلا میتونیم در فایل /etc/nginx/nginx.conf درون بلاک http این وارد کنیم

1
2
3
4
5
6
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}

اگه توجه کرده باشید جلوی server_name فقط یک _ نوشته شده، معنی این کاراکتر اینه که مهم نیست چه دامنه یا آدرسی درخواست داده شده، همه درخواست های باید ریدایرکت بشن.
دست آخر هم nginx رو ریستارت باید کرد

1
service nginx restart

که چون سرور من cent 6 هست، من فقط دستور این سیستم یادم مونده.