Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » Не могу получить Request данные через https » 30.12.2018 01:42:42

Может поможет - мой конфиг нжинкса

# [url]http://example.com[/url], [url]http://www.example.com[/url] --> [url]https://example.com[/url]
server {
    listen      80;
    listen [::]:80;
    
    # Server domains
    server_name example.com [url=http://www.example.com]www.example.com[/url];
    
    return 301 [url]https://example.com[/url]$request_uri;

    # Needed for firt sertificat init
    # location ^~ /.well-known {
    #     allow all;
    #     root  /data/letsencrypt/;
    # }
}

# [url]https://www.example.com[/url] --> [url]https://example.com[/url]
server {
    listen      443     ssl http2;
    listen [::]:443     ssl http2;
    
    # Server domains
    server_name         [url=http://www.example.com]www.example.com[/url];

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

    # modern configuration
    ssl_protocols       TLSv1.2;
    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;
    ssl_prefer_server_ciphers on;

    # OCSP Stapling
    ssl_stapling        on;
    ssl_stapling_verify on;
    resolver            1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s;
    resolver_timeout    2s;

    # SSL certificates
    ssl_certificate           /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate   /etc/letsencrypt/live/example.com/chain.pem;

    # Security Headers
    add_header X-Frame-Options           "SAMEORIGIN" always;
    add_header X-XSS-Protection          "1; mode=block" always;
    add_header X-Content-Type-Options    "nosniff" always;
    add_header Referrer-Policy           "no-referrer-when-downgrade" always;
    add_header Content-Security-Policy   "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;


    return 301 [url]https://example.com[/url]$request_uri;
}


# [url]https://example.com[/url]
server {
    listen      443     ssl http2;
    listen [::]:443     ssl http2;
    
    # Server domains
    server_name         example.com;
    
    # SSL certificates
    ssl_session_timeout 1d;
    ssl_session_cache   shared:SSL:50m;
    ssl_session_tickets off;

    # modern configuration
    ssl_protocols       TLSv1.2;
    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;
    ssl_prefer_server_ciphers on;

    # OCSP Stapling
    ssl_stapling        on;
    ssl_stapling_verify on;
    resolver            1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s;
    resolver_timeout    2s;

    # SSL certificates
    ssl_certificate           /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate   /etc/letsencrypt/live/example.com/chain.pem;

    # Security Headers
    add_header X-Frame-Options           "SAMEORIGIN" always;
    add_header X-XSS-Protection          "1; mode=block" always;
    add_header X-Content-Type-Options    "nosniff" always;
    add_header Referrer-Policy           "no-referrer-when-downgrade" always;
    add_header Content-Security-Policy   "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;


    # Root folder
    root  /app/public;
    
    # index.php
    index index.php;

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

    # SEO | Add back slash SEO
    if ($request_method = "GET") {
        rewrite ^([^.]*[^/])$ $1/ permanent;
    }

    # LetsEncrypt folder
    location ^~ /.well-known {
        allow all;
        root  /data/letsencrypt/;
    }

    # Entry point for App, index.php fallback
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # handle .php
    location ~ \.php$ {
        # default fastcgi_params
        include   fastcgi_params;
        
        # 404
        try_files $uri /index.php =404;
        
        # fastcgi settings
        fastcgi_pass        app:9000;
        fastcgi_index       index.php;
        fastcgi_buffers     16 16k;
        fastcgi_buffer_size 32k;

        # fastcgi params
        fastcgi_param HTTPS on;
        fastcgi_param HTTP_HTTPS on;
        fastcgi_param REQUEST_SCHEME https;
        fastcgi_param SERVER_PORT 443; 
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_read_timeout 600;
    }

    # Assets and media
    location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
        add_header Cache-Control public;
        
        expires 7d;
        access_log off;
    }

    # SVG and fonts
    location ~* \.(?:svgz?|svg|ttf|ttc|otf|eot|woff|woff2?)$ {
        add_header Access-Control-Allow-Origin "*";
        add_header Cache-Control public;

        expires 7d;
        access_log off;
    }
}

#2 Re: Laravel » Очереди для почтовой отправки » 03.11.2018 09:15:47

Вам на сервере нужно держать запущены php artisan queue:work --tries=3 (трайз тут или в джобе поможет контролировать попытки на случай ошибок и Supervisor в помощь)
Очереди я думаю отлично лежат в Редисе и если соблюдать queue connection для разных очередей то эту инфу можно по ключу выбирать - там обьект со всей этой инфой.
Инфа о том что зафейлилось если надо может собираться в табличку - php artisan queue:failed-table. Но я думаю архитектурно правильнее написать Хендлер нужной бизнес логики (отправка смс при ошибке или запись нужная в журнал Тут если надо и событие дернуть можно но это на любителя) и передавать ошибки уже в него.
если хендлеры не лень пописать то можно в джобе все через трай-кечь прописать и разные обработчики напихать - детализация ошибок на ваш вкус..
Я както так вижу.

#3 Re: Laravel 5.x » Куда складывать свои класс, и как их регистрировать. » 27.09.2018 17:24:32

Тебе нужно почитать про Сервис контейнеры и Сервис провайдеры. Некий провайдер у тебя должен выдавать нужный тебе сервис АПИ.

#4 Re: Laravel 5.x » Работа с API Новая почта в Laravel » 29.08.2017 13:05:47

devcenter.novaposhta()ua/docs/services/556d7ccaa0fe4f08e8f7ce43/operations/556d885da0fe4f08e8f7ce46/console - Список городов
devcenter.novaposhta()ua/docs/services/556d7ccaa0fe4f08e8f7ce43/operations/58e5ebeceea27017bc851d67/console - Поиск по городам

devcenter.novaposhta()ua/docs/services/556d7ccaa0fe4f08e8f7ce43/operations/556d8211a0fe4f08e8f7ce45 - пример запроса для получения отделений в городе - тебе нужен быдет CityRef из предыдущих ссылок чтоб все работало.

Как сам процес построить? Получай город гет параметром или как угодно в контроллер. Там же делай ПОСТ запрос в формате джейсон к АПИ, испльзуя Guzzle(или подобное). Выбирай нужный город и бери его CityRef, после делай еще 1 запрос для получения списка отделений. Передай этот список во вью и выведи селектом.

Возможно сделать также это все на стороне JS - 2 селекта в 1 - список гоородов полученный по первой ссылке используя Axios/ajax, 2 - список же обновляеться при изменении значения 1рвого принимая CityRef нужного города.

Подвал раздела