Laradock中Laravel Octane與WebSocket的nginx怎么配置

前情描述

在laradock中安裝好laravel Octane后swoole啟動,在nginx中配置端口訪問連接失敗, 報錯提示502,配置如下:

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

原因:Swoole服務器在Workspace容器中運行;nginx服務器在Nginx容器中運行,需要找到Workspace的ip并在nginx中配置。

解決方法

  • docker ps 查看Workspace容器的id。

  • docker inspect 容器id,找到Networks中的IPAddress。

  • 修改nginx配置文件。

    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;}
  • 重啟nginx。

配置文件

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;}

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享