我使用docker来运行我的laravel项目,我有一个应用程序(php)和nginx容器。
在本地,一切都正常,但一旦我在AWS EC2服务器上安装了docker,并将我的ECR docker容器拉到EC2服务器上,就没有静态内容加载了。
我已经运行了php artisan route:list
和所有的web.php路由都在那里,似乎是工作,当我去我的域页面加载没有样式,因为所有的静态文件在公共目录返回404错误。
这是我的nginx容器的配置
server {
listen 80;
server_name {domain};
root /var/www/html/public;
index index.php index.html;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass subscription_manager_php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/html/public$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
在EC2服务器上,我运行nginx,它代理到这个容器,这是我的配置
server {
server_name {domain};
location / {
proxy_pass http://127.0.0.1:8003;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
listen 80;
}
nginx服务器运行在端口:8003 BTW,以防被询问。
我以为集装箱上的这个位置块
location / {
try_files $uri $uri/ /index.php?$query_string;
}
将只加载任何url被传递,如{domain}/images/test.png
,如果不存在,那么它将查看index.php
以查看是否存在路由。
更新
这些是我正在运行的拉取和运行ECR容器的命令
aws ecr get-login-password --region eu-west-2 | docker login --username AWS --password-stdin {ecr-path}
docker pull {ecr-path}/subscription.manager/php:latest
docker pull {ecr-path}/subscription.manager/nginx:latest
docker rm -f subscription_manager_php || true
docker rm -f subscription_manager_nginx || true
docker network inspect subscription_manager_network >/dev/null 2>&1 || docker network create subscription_manager_network
docker run -d --network="subscription_manager_network" --name="subscription_manager_php" -v /home/ubuntu/.env.subscription_manager:/var/www/html/.env -v subscription_manager_php_storage:/var/www/html/storage/ {ecr-path}/subscription.manager/php:latest
docker run -d -p 8003:80 --network="subscription_manager_network" --name="subscription_manager_nginx" {ecr-path}/subscription.manager/nginx:latest
docker exec subscription_manager_php php artisan migrate --force
1条答案
按热度按时间fzsnzjdm1#
如果你使用docker-compose,在nginx容器的配置中添加以下行:
假设你的php容器名为“php-blog”,ngnix配置应该是这样的: