hamed sarkhosh
3 سال پیش توسط hamed sarkhosh مطرح شد
2 پاسخ

تنظیمات nginx به همراه ssl برای لاراول

با سلام خدمت دوستان عزیز
من روی سرور یک پروژه لاراولی دارم که اون رو با nginx کانفیگ کردم و به خوبی کار می کرد. حالا خواستم از طریق certbot و letsEncrypt برای سرور خودم ssl بزارم و اون رو https کنم
ولی هر جوری این تنظیمات nginx رو تغییر می دم به نتیجه نمی رسم. نمی دونم مشکلم از کجاست. راهکارهای مختلفی رو هم در سطح وب امتحان کردم ولی به جواب نرسیدم. من نمونه تنظیمات nginx ام رو اینجا می زارم ممنون میشم راهنمایی کنید که باید چی کار کنم. من از طریق certbot اومدم لایسنس هارو ایجاد کرد.

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name example.com www.example.com;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/ example.com /fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ example.com/privkey.pem;

    root /var/www/example/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

server {
    listen 80;
    listen [::]:80;

    server_name example.com www. example.com;

    return 302 https://$server_name$request_uri;
}

@ali.bayat
@milad
@muhammad
@mhyeganeh
@abedim910
@hesammousavi


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
1

اون اسپیس هایی که توی ssl_certificate ها دارید میتونه مشکل زا باشه
در ضمن تنظیمات بیشتری هم میتونه داشته باشه
کانفیگ زیر رو امتحان کن

server {
    listen 80;
    listen [::]:80;

    server_name domain.com;

    # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    root /var/www/html/project/public;
    index index.php index.html index.htm;

    server_name domain.com;

    ssl on;
    ssl_certificate      /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/domain.com/privkey.pem;

    ssl_session_timeout  1d;
    ssl_session_cache    shared:SSL:50m;
    ssl_session_tickets  off;

    ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers  on;
    ssl_dhparam                /etc/ssl/certs/dhparam.pem;

    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    #ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling         on;
    ssl_stapling_verify  on;

    add_header Strict-Transport-Security max-age=15768000;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }
}

محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
1

سلام

اگر با استفاده از کامند زیر اقدام کنید، کلیه تنظیمات وب سرورها بصورت اتومات توسط خود CertBot اعمال میشن و شما نیازی نیست هیچ کاری انجام بدید.

sudo certbot --nginx

پس به نظرم اول تمامی تنظیمات SSL رو که خودتون اضافه کردید رو حذف کنید و بعد دستور بالا رو وارد کنید و بعد با دقت به سوالاتی که می پرسه پاسخ بدید و پیش برید. در پایان اگر به فایل تنظیمات وب سرورتون مراجعه کنید کدهایی که توسط Certbot اضافه شدند رو میتونید مشاهده کنید و همه چیز هم باید درست کار کنه.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام