راکت

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

2 پاسخ

با سلام خدمت دوستان عزیز
من روی سرور یک پروژه لاراولی دارم که اون رو با 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

ثبت پرسش جدید

پاسخ‌ها

2
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

اون اسپیس هایی که توی 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;
    }
}
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

سلام

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

sudo certbot --nginx

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

شاید پاسخ شما همین‌جا باشد

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

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