لینوکس و شبکه

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

۲ مطلب با کلمه‌ی کلیدی «NginX-ssl» ثبت شده است

۲۲
خرداد

نکته: سرویس NginX همانند سرویس آپاچی در لینوکس و سرویس IIS در ویندوز است  که یک وب سرور به ما میدهد تا بتوانیم در بستر آن صفحات وب را به اشتراک بگذاریم


نصب: از دستورات package manager  سیستم عامل استفاده نمایید

Debian:  sudo apt-get install nginx
CentOS:  sudo yum install nginx

نکته: فایل های تنظیماتی سرویس  NginX  در مسیر etc/nginx قرار دارد

در فایل زیر:

/etc/nginx/nginx.conf

در خطی که با  عبارت  include آغاز میشود، مسیر زیر را مطابق نمونه قرار بدهید (در مسیر زیر برای هر دامنه یک فایل تنظیماتی بسازیم و کانفیگ هر سایت و یا دامنه را مجزا درون آن قرار دهید)

include /etc/nginx/site_available/*.conf;



یعنی در مسیر site_available به ازای هر فایلی که با پسوند conf وجود دارد و محتوی کانفیگ یک دامنه دلخواه است آن فایل خوانده می‌شود و یک دامنه را کانفیگ می‌کند.

بطور  مثال برای دامنه BMS  از فایل BMS.conf  در مسیر site-available  که در رهنگر مورد استفاده قرار میگرفته استفاده شد.


تمپلیت خوب برای استفاده در هر دامنه جدید:

upstream backend1  {
  ip_hash;
  server 172.16.85.237:8080 max_fails=3  fail_timeout=15s;
  server 172.16.85.238:8080 max_fails=3  fail_timeout=15s;
}
server {
        listen 80;
        server_name 172.16.85.244;
        client_max_body_size 250M;
 
location / {
        proxy_set_header X-Forwarded-Proto http;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://backend1;
        rewrite ^/$ /Ganjeh last;
       }
}



نکته:  کانفیگ بالا در فایل موجود در Site-available قرار خواهد گرفت.

بعنوان مثال برای فایل BMS.conf در رهنگر مشهد از شکل زیر استفاده شد:

#pstream backend  {
#  server 127.0.0.1:8080 ;
#}
server {
        listen 80;
        server_name 188.253.0.16;
        server_name mashhad.etrack.ir;
 
location / {
        proxy_set_header X-Forwarded-Proto http;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080/BMS;
       }
location /BMS {
        proxy_set_header X-Forwarded-Proto http;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080/BMS;
       }
 
location /MapCache {
        proxy_set_header X-Forwarded-Proto http;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080/MapCache;
       }
}


  • behrooz mohamadi nsasab
۲۲
خرداد

برای راه اندازی سرویس 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