nginx配置如下:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream laravels {
# By IP:Port
server 127.0.0.1:5200 weight=5 max_fails=3 fail_timeout=30s;
# By UnixSocket Stream file
#server unix:/xxxpath/laravel-s-test/storage/laravels.sock weight=5 max_fails=3 fail_timeout=30s;
#server 192.168.1.1:5200 weight=3 max_fails=3 fail_timeout=30s;
#server 192.168.1.2:5200 backup;
}
server {
listen 80;
server_name vmware_for_laravels.com;
root /var/www/public;
#access_log /var/log/nginx/$server_name.access.log main;
autoindex off;
index index.html index.htm;
# Nginx處理靜態(tài)資源(建議開啟gzip)尤溜,LaravelS處理動(dòng)態(tài)資源。
location / {
try_files $uri @laravels;
}
# 當(dāng)請求PHP文件時(shí)直接響應(yīng)404,防止暴露public/*.php
#location ~* \.php$ {
# return 404;
#}
# Http和WebSocket共存拒课,Nginx通過location區(qū)分
# Javascript: var ws = new WebSocket("ws://laravels.com/ws");
location =/ws {
proxy_http_version 1.1;
# proxy_connect_timeout 60s;
# proxy_send_timeout 60s;
# proxy_read_timeout:如果60秒內(nèi)客戶端沒有發(fā)數(shù)據(jù)到服務(wù)端邻奠,那么Nginx會(huì)關(guān)閉連接稚伍;同時(shí)疼蛾,Swoole的心跳設(shè)置也會(huì)影響連接的關(guān)閉
# proxy_read_timeout 60s;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header Server-Protocol $server_protocol;
proxy_set_header Server-Name $server_name;
proxy_set_header Server-Addr $server_addr;
proxy_set_header Server-Port $server_port;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://laravels;
}
location @laravels {
proxy_http_version 1.1;
# proxy_connect_timeout 60s;
# proxy_send_timeout 60s;
# proxy_read_timeout 120s;
proxy_set_header Connection "keep-alive";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header Server-Protocol $server_protocol;
proxy_set_header Server-Name $server_name;
proxy_set_header Server-Addr $server_addr;
proxy_set_header Server-Port $server_port;
proxy_pass http://laravels;
}
結(jié)果:
報(bào)錯(cuò).png
解決方式:
1.確保所有容器正常啟動(dòng)
docker-compose ps
查看容器是否都有正常啟動(dòng).png
2.查看workspace的工作區(qū)容器IP地址
查看原因:Swoole服務(wù)器將在Workspace容器中運(yùn)行罗洗;Nginx服務(wù)器在Nginx容器中運(yùn)行愉舔;
檢查容器并在NetworkSettings中搜索后端網(wǎng)絡(luò),找到應(yīng)該使用的IP地址
查看容器id
docker ps
查看容器的ip
docker inspect 你的workspace容器id
查看容器的ip.png
拉到最下面 找到ip
ip.png
3.修改nginx的配置
upstream laravels 塊改成如下:
# By IP:Port
server 172.28.0.5:5200 weight=5 max_fails=3 fail_timeout=30s;
# By UnixSocket Stream file
#server unix:/xxxpath/laravel-s-test/storage/laravels.sock weight=5 max_fails=3 fail_timeout=30s;
#server 192.168.1.1:5200 weight=3 max_fails=3 fail_timeout=30s;
#server 192.168.1.2:5200 backup;
}
4.重啟nginx容器
docker-compose restart
5.進(jìn)入workspace容器并開啟laravels
[root@localhost laradock]# docker-compose exec workspace bash
root@aa8014441d0b:/var/www# bin/laravels start -d
6.測試
測試png