به طور پیش فرض ، Jenkins با سرور مجازی داخلی Winstone خود همراه است که به پورت 8080 گوش می دهد ، و برای شروع مناسب است. با این وجود بهتر است که Jenkins را با SSL محافظت كنید تا از رمزهای عبور و داده های حساس منتقل شده از طریق رابط وب محافظت كنید.
در این آموزش ، Nginx را به عنوان یک پروکسی معکوس برای هدایت درخواست های کلاینت به Jenkins پیکربندی می کنید.
پیش نیازها
برای شروع ، به موارد زیر نیاز دارید:
⦁ یک سرور مجازی Ubuntu 20.04 با یک کاربر غیر ریشه و فعال شده با sudo فایروال ، که طبق راهنمای ستاپ اولیه سرور مجازی Ubuntu 20.04 پیکربندی شده باشد.
⦁ Jenkins طبق ماحل نحوه نصب Jenkins در اوبونتو 20.04 نصب شده باشد
⦁ Nginx طبق مراحل نحوه نصب Nginx در اوبونتو 20.04 نصب شده باشد
⦁ یک گواهی SSL برای یک دامنه تهیه شده توسط Let’s Encrypt. برای به دست آوردن این گواهینامه نحوه ایمن سازی Nginx با Let’s Encrypt در اوبونتو 20.04 را دنبال کنید. توجه داشته باشید که به یک نام دامنه ثبت شده احتیاج دارید که در اختیار داشته یا کنترل کنید. در این آموزش از نام دامنه example.com استفاده می شود.
مرحله 1 – پیکربندی Nginx
در آموزش مقدماتی نحوه ایمن سازی Nginx با Let’s Encrypt در Ubuntu 20.04 ، Nginx را تنظیم کرده اید تا از SSL در فایل /etc/nginx/sites-available/example.com استفاده کند. این فایل را برای افزودن تنظیمات پروکسی معکوس خود باز کنید:
⦁ $ sudo nano /etc/nginx/sites-available/example.com

در بلوک سرور مجازی با تنظیمات پیکربندی SSL ، ورودهای دسترسی یافته و همراه با خطای Jenkins را اضافه کنید:
/etc/nginx/sites-available/example.com
. . .
server {
. . .
# SSL Configuration
#
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
access_log /var/log/nginx/jenkins.access.log;
error_log /var/log/nginx/jenkins.error.log;
. . .
}

سپس تنظیمات پروکسی را پیکربندی می کنیم. از آنجا که ما همه درخواست ها را به Jenkins ارسال می کنیم ، خط پیش فرض try_files را حذف می کنیم ، که در غیر این صورت خطای 404 قبل از رسیدن درخواست به Jenkins باز می گردد:
/etc/nginx/sites-available/example.com
. . .
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404; }
. . .

اکنون می خواهیم تنظیمات پروکسی را اضافه کنیم ، که شامل موارد زیر است:
proxy_params: فایل / etc / nginx / proxy_params توسط Nginx تهیه شده است و اطمینان می دهد که اطلاعات مهم ، از جمله نام میزبان ، پروتکل درخواست کلاینت و آدرس IP کلاینت ، در فایل های log حفظ میشود و در دسترس می باشد.
proxy_pass: پروتکل و آدرس سرور مجازیپروکسی را تعیین می کند ، که در این حالت سرور مجازی Jenkins از طریق localhost در پورت 8080 قابل دسترسی خواهد بود.
proxy_read_timeout: افزایش از پیش فرض 60 ثانیه Nginx به مقدار 90 ثانیه توصیه شده Jenkins را ممکن می کند.
proxy_redirect: تضمین می کند که پاسخ ها به درستی بازنویسی میشوند تا نام میزبان مناسب درج شود.
حتماً نام دامنه ایمن شده با SSL خود را برای example.com در خط proxy_redirect در کد زیر جایگزین کنید:
/etc/nginx/sites-available/example.com
Location /
. . .
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404;
include /etc/nginx/proxy_params;
proxy_pass http://localhost:8080;
proxy_read_timeout 90s;
# Fix potential “It appears that your reverse proxy setup is broken” error.
proxy_redirect http://localhost:8080 https://example.com;

پس از انجام این تغییرات ، فایل را ذخیره کنید و از ویرایشگر خارج شوید. راه اندازی مجدد Nginx را تا بعد از پیکربندی Jenkins متوقف میکنیم، اما می توانیم پیکربندی خود را اکنون تست کنیم:
⦁ $ sudo nginx -t

اگر همه چیز خوب پیش برود ، این فرمان برمی گردد:
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

اگر اینطور نبود ، خطاهای گزارش شده را برطرف کنید تا تست موفق آمیز باشد.
توجه داشته باشید:
اگر متن proxy_pass را اشتباه پیکربندی کنید (برای مثال با اضافه کردن یک اسلش) ، در صفحه تنظیمات Jenkins چیزی شبیه به زیر خواهید یافت.

اگر این خطا را مشاهده کردید ، تنظیمات proxy_pass و proxy_redirect خود را در پیکربندی Nginx دو بار بررسی کنید.
مرحله 2 – پیکربندی Jenkins
برای همکاری Jenkins با Nginx ، باید پیکربندی Jenkins را به روز کنید تا سرور مجازی Jenkins فقط به رابط localhost گوش دهد و نه به تمام رابط ها (0.0.0.0). اگر Jenkins تمام رابط ها را تحت نظر بگیرد ، در پورت اصلی و رمز گذاری نشده آن (8080) به طور بالقوه قابل دسترسی است.
بیایید فایل پیکربندی / etc / default / jenkins را اصلاح کنیم تا این تنظیمات انجام شود:
⦁ $ sudo nano /etc/default/jenkins

خط JENKINS_ARGS را پیدا کنید و –httpListenAddress = 127.0.0.1 را به آرگومان های موجود اضافه کنید:
/etc/default/jenkins
. . .
JENKINS_ARGS=”–webroot=/var/cache/$NAME/war –httpPort=$HTTP_PORT –httpListenAddress=127.0.0.1″

فایل را ذخیره کنید و از آن خارج شوید.
برای استفاده از تنظیمات پیکربندی جدید ، Jenkins را مجدداً راه اندازی کنید:
⦁ $ sudo systemctl restart jenkins

از آنجا که systemctl خروجی را نمایش نمی دهد ، وضعیت را بررسی کنید:
⦁ $ sudo systemctl status jenkins

باید وضعیت active (exited) را در خط Active  مشاهده کنید:
Output
● jenkins.service – LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: active (exited) since Mon 2018-07-09 20:26:25 UTC; 11s ago
Docs: man:systemd-sysv-generator(8)
Process: 29766 ExecStop=/etc/init.d/jenkins stop (code=exited, status=0/SUCCESS)
Process: 29812 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCESS)

Nginx را ریستارت کنید:
⦁ $ sudo systemctl restart nginx

وضعیت را بررسی کنید:
⦁ $ sudo systemctl status nginx

Output
● nginx.service – A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-07-09 20:27:23 UTC; 31s ago
Docs: man:nginx(8)
Process: 29951 ExecStop=/sbin/start-stop-daemon –quiet –stop –retry QUIT/5 –pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 29963 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 29952 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 29967 (nginx)

با راه اندازی مجدد هر دو سرور مجازی ، باید بتوانید با استفاده از HTTP یا HTTPS از دامنه بازدید کنید. درخواست های HTTP بصورت خودکار به HTTPS هدایت می شوند و سایت Jenkins با امنیت کامل ارائه می شود.
مرحله 3 – تست پیکربندی
اکنون که رمزگذاری را فعال کرده اید ، می توانید با تنظیم مجدد رمزعبور ادمین ، پیکربندی را آزمایش کنید. بیایید با مراجعه به سایت از طریق HTTP تأیید کنیم که می توانید به Jenkins برسید و به HTTPS هدایت می شوید.
در مرورگر وب خود ، http://example.com را وارد کنید و دامنه خود را با example.com جایگزین کنید. بعد از اینکه ENTER را فشار دهید ، URL باید از https شروع شود و نوار مکان باید نشان دهد که اتصال ایمن است.
می توانید نام کاربری ادمین را که در نحوه نصب Jenkins در Ubuntu 20.04 در فیلد User ایجاد کرده اید و رمز عبوری که در قسمت Password انتخاب کرده اید وارد کنید.
پس از ورود به سیستم ، می توانید رمز عبور را تغییر دهید تا مطمئن شوید که از امنیت بالا برخوردار است.
در گوشه سمت راست بالای صفحه روی نام کاربری خود کلیک کنید. در صفحه نمایه اصلی ، از لیست موجود در سمت چپ صفحه ، پیکربندی را انتخاب کنید:

با این کار شما به صفحه جدیدی می روید که می توانید یک رمز جدید وارد کرده و تأیید کنید:

با کلیک روی Save ، رمز عبور جدید را تأیید کنید. اکنون می توانید از رابط وب Jenkins ایمن استفاده کنید.
نتیجه
در این آموزش Nginx را به عنوان یک پروکسی معکوس در وب سرور مجازی داخلی Jenkins برای تأیید اعتبار و سایر اطلاعات منتقل شده از طریق رابط وب پیکربندی کردید. اکنون که Jenkins ایمن است ، می توانید یاد بگیرید که چگونه می توانید خط اتصال یکپارچه سازی مداوم را تنظیم کنید تا به طور خودکار تغییرات کد را آزمایش کنید. منابعی دیگر که باید در مورد Jenkins با آن ها آشنا شوید عبارتند از آموزش “ایجاد اولین Pipeline ” یا کتابخانه افزونه های مرتبط.

 

نحوه میزبانی وب سایت با استفاده از Cloudflare و Nginx در اوبونتو 20.04

چگونه می توان با Stunnel و redis-cli به یک Redis نمونه مدیریت شده از طریق TLS متصل شد

چگونگی توسعه وب سایت Drupal 9 در دستگاه محلی خود با استفاده از Docker و DDEV

نحوه راه اندازی بستگی به سیستم عامل برنامه Eclipse Theia Cloud IDE در اوبونتو 18.04 [Quickstart]

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js

نحوه تنظیم Mattermost در اوبونتو 20.04

نحوه ساخت یک ربات Discord با Node.js

نحوه پیکربندی Jenkins با SSL با استفاده از پروکسی معکوس Nginx در اوبونتو 20.04

نحوه نصب چهارچوب وب Django در اوبونتو 20.04

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکاخرید سرور مجازی ارزان هلندvpsخرید vps هلندخرید سرور مجازی آمریکاخرید vps فرانسهتست vpsسرور مجازی تستسرور مجازی ویندوزارزانترین vpsخرید وی پی اسvps ارزان – 

برچسب‌ها:,