Home  >  Article  >  PHP Framework  >  Share the nginx configuration of Laravel Octane and WebSocket in Laradock

Share the nginx configuration of Laravel Octane and WebSocket in Laradock

藏色散人
藏色散人forward
2023-02-14 11:20:291524browse

This article brings you relevant knowledge about Laravel, which mainly records the nginx configuration of Laravel Octane and WebSocket in Laradock. For those who are interested, take a look below. I hope it will be helpful to you.

Share the nginx configuration of Laravel Octane and WebSocket in Laradock

docker Installation of laradock and Laravel Octane will not be described in detail here.

Previous description

After installing Laravel Octane in laradock, swoole is started, and the port access connection configuration in nginx fails. Error message 502, the configuration is as follows:

location /octane {
    proxy_pass http://127.0.0.1:8080;}

Cause: Swoole server runs in the Workspace container; Nginx server runs in the Nginx container, you need to find the IP of Workspace and configure it in nginx.

Solution

  • docker ps View the id of the Workspace container.

  • docker inspect container id and find IPAddress in Networks.

  • Modify the nginx configuration file.

    map $http_upgrade $connection_upgrade {
     default upgrade;
     ''      close;}
    upstream ws {
     server 172.22.0.4:9502 weight=5 max_fails=3 fail_timeout=30s;}
    location /ws {
     set $suffix "";
    
     if ($uri = /index.php) {
         set $suffix ?$query_string;
     }
    
     proxy_http_version 1.1;
     proxy_set_header Host $http_host;
     proxy_set_header Scheme $scheme;
     proxy_set_header SERVER_PORT $server_port;
     proxy_set_header REMOTE_ADDR $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection $connection_upgrade;
    
     proxy_pass http://ws$suffix;}
  • Restart nginx.

Configuration file

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;}upstream ws {
    server 172.22.0.4:9502 weight=5 max_fails=3 fail_timeout=30s;}server {

    listen 80;
    listen [::]:80;

    server_name bbs.test;
    root /var/www/laravel/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }

    location /ws {
        set $suffix "";

        if ($uri = /index.php) {
            set $suffix ?$query_string;
        }

        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header Scheme $scheme;
        proxy_set_header SERVER_PORT $server_port;
        proxy_set_header REMOTE_ADDR $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;

        proxy_pass http://ws$suffix;
    }

    error_log /var/log/nginx/laravel_error.log;
    access_log /var/log/nginx/laravel_access.log;}

Recommended study: "laravel video tutorial"

The above is the detailed content of Share the nginx configuration of Laravel Octane and WebSocket in Laradock. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:learnku.com. If there is any infringement, please contact admin@php.cn delete