404错误。 我在生产环境中部署了使用docker构建的laravel。 我已经确认它可以在本地运行,我认为URL的规范很奇怪。 URL在本地使用localhost,在生产环境中使用获取的域。
.env
APP_NAME=Laravel
APP_ENV=production
APP_DEBUG=false
APP_KEY=<<APP_KEY>>
APP_URL=<<my_domain>>
LOG_CHANNEL=stack
docker-compose.yml
version: '3'
services:
php:
container_name: php
build: ./docker/php
volumes:
- ./server:/var/www
nginx:
image: nginx
container_name: nginx
ports:
- 81:81
volumes:
- ./server:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
db:
image: mysql:5.7
container_name: db-host
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
MYSQL_USER: test
MYSQL_PASSWORD: test
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- ./docker/db/data:/var/lib/mysql
- ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
- ./docker/db/sql:/docker-entrypoint-initdb.d
ports:
- 3307:3307
default.conf
server {
listen 81;
index index.php index.html;
root /var/www/laravel/public;
location / {
root /var/www/laravel/public;
index index.html index.php;
try_files $uri $uri/ /index.php$query_string;
}
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
A nginx "nginx -g 'daemon of…" 3 hours ago Up About an hour 80/tcp, 0.0.0.0:81->81/tcp nginx
B mysql:5.7 "docker-entrypoint.s…" 3 hours ago Up 2 hours 3306/tcp, 33060/tcp, 0.0.0.0:3307->3307/tcp db-host
C tsurikatsu_web_php "docker-php-entrypoi…" 4 hours ago Up 2 hours 9000/tcp php
我希望显示laravel项目,但实际输出是404错误
请帮助我。
答案 0 :(得分:0)
根据我在docker-compose.yml文件中看到的内容,您正在将服务器81端口映射到nginx容器81端口,这意味着除非通过端口转发流量,否则您必须通过指定端口81来访问站点。 80到localhost:81。
如果您不对vultr服务器使用任何代理转发,并且端口80没有保留任何内容,那么我建议您尝试用Stream::filter
替换nginx服务中的端口映射
如果这不是一个选择(某些东西已经使用了服务器上的端口80),那么无论何时请求特定的主机名,都应该将流量从端口80转发到端口81。