لینوکس و شبکه

لینوکس و شبکه
طبقه بندی موضوعی
آخرین مطالب
  • ۹۹/۱۱/۱۳
    java

Nginx-Setup SSL

سه شنبه, ۲۲ خرداد ۱۳۹۷، ۰۱:۳۲ ب.ظ

برای راه اندازی سرویس https در Nginx به روش زیر عمل کنید:

نکته: در هرباری که تغییری در تنظیمات انجام میدهید از دستور زیر استفاده نمایید تا مطمئن شوید که تغییرات درست بوده و موجب خطا نمیشود(سرویس را ریست ننمایید و از دستور زیر استفاده نمایید)

nginx -t

در زیر یک نمونه فایل config قبل ازآعمال تغییرات آورده شده تا تغییرات بوضوح مشاهده شود:

server {
         listen 80;
         server_name minitapp.ir;
         server_name www.minitapp.ir;
         client_max_body_size 300M;
         
         location / {
                proxy_pass http://192.168.2.101:8080/;
                proxy_set_header X-Forwarded-Proto https;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For
                $proxy_add_x_forwarded_for;
        }
}

همچنین بلاک زیر بعد از بروز تغییرات می‌باشد:

server {
         listen 80;                                                         # http port
         server_name minitapp.ir;                                           # domain
         server_name www.minitapp.ir;
         client_max_body_size 300M;
         return 301 https://$server_name$request_uri;                       # Redirect to (return301 means redirect)
}
 
server {
         listen 443;                                                                                 # https port
         server_name minitapp.ir;                                                         # domain
         server_name www.minitapp.ir;                                                # domain
         client_max_body_size 300M;
         ssl on;
         ssl_certificate /etc/nginx/sites-cert/minitapp.ir.pem;            # Pem(CertificateFile) file
         ssl_certificate_key /etc/nginx/sites-cert/minitapp.ir.key;      # Key(CertificateFile) file
         ssl_session_timeout  5m;                                                        # Optional
         ssl_protocols  TLSv1;                                                               # Optional
         ssl_ciphers  HIGH:!aNULL:!MD5;                                             # Optional
         ssl_prefer_server_ciphers   on;                                               # Optional
 
         location / {
                proxy_pass http://192.168.2.101:8080/;
                proxy_set_header X-Forwarded-Proto https;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For
                $proxy_add_x_forwarded_for;
        }
}

نکته: مسیر زیر یک مسیر دلخواه است که در سرور Nginx است که برای نگهداری فایل های ca در نظر گرفته شده است

/etc/nginx/sites-cert

نکته: return 301 به معنی این است که صفحات را به آدرس مورد نظر منتقل(redirect) کن

نکته: اگر بخواهیم فقط از سرویس https استفاده نماییم باید از داخل بلاک server با پورت 80 تمامی location ها را پاک کرده و به یک بلاک جدید با همان نام server و با شماره 443 (بجای 80) قرار دهیم (توجه شود که هیچ مقداری در location ها تغییر نخواهند کرد)-(توجه شود که directive با عنوان  proxy در تگ http مشاهده نشود)

نکته: اگر بخواهیم از هردو پروتکل http و https استفاده نماییم، آنگاه خط return 301 را از محل listen 80 حذف کرده و به بلاک های آن دست نمی‌زنیم.

  • ۹۷/۰۳/۲۲
  • behrooz mohamadi nsasab

NginX

NginX-ssl

Nginx

SSL

ngimX

nginx

nginx-ssl

ssl