Puncte:0

nginx funcționează bine în localhost, dar arată 404 pe server

drapel ru

Am un proiect bazat pe laravel pe care trebuie să-l găzduiesc pe oceanul digital folosind docker. docker funcționează bine pe localhost, dar arată 404 pe server, dar phpmyadmin funcționează bine și pe server, care rulează pe 8080 port.

Aici e al meu docker-compose.yml

 versiunea: '3'

retele:
  laravel:


Servicii:
  nginx:
    imagine: nginx:stable-alpine
    container_name: nginx
    porturi:
      - „8088:80”
    volume:
      - ./src:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depinde de:
      - php
      - mysql
    retele:
      - laravel

  mysql:
    imagine: mysql:5.7.22
    reporniți: dacă nu este oprit
    tty: adevărat
    porturi:
      - „4306:3306”
    volume:
      - ./mysql:/var/lib/mysql
    mediu inconjurator:
      MYSQL_ROOT_PASSWORD: „rădăcină”
      MYSQL_DATABASE: „laravel_test”
      MYSQL_USER: „rădăcină”
      MYSQL_PASSWORD: „rădăcină”
      SERVICE_TAGS: „dev”
      SERVICE_NAME: „mysql”
    retele:
      - laravel

  php:
    construi:
      context: .
      dockerfile: Dockerfile
    nume_container: php
    volume:
      - ./src:/var/www/html
    porturi:
      - „9000:9000”
    reporniți: dacă nu este oprit

    retele:
      - laravel

  phpmyadmin:
    imagine: phpmyadmin
    reporniți: întotdeauna
    porturi:
      - 8080:80
    mediu inconjurator:
      - PMA_ARBITRARY=1
    link-uri:
      - mysql
    retele:
      - laravel

  npm:
    imagine: node:18-alpine3.14
    container_name: npm
    volume:
      - ./src:/var/www/html
    work_dir: /var/www/html
    punct de intrare: [ 'npm', '--no-bin-links']
    retele:
      - laravel

  compozitor:
    imagine: compozitor:latest
    container_name: compozitor
    volume:
      - ./src:/var/www/html
    work_dir: /var/www/html
    depinde de:
      - php
    retele:
      - laravel

Dockerfile

DE LA php:8.1.0-fpm

RUN docker-php-ext-install pdo pdo_mysql

implicit.conf

Server{
    asculta 80;
    index index.php index.html;
    nume_server gazdă locală;
    error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html/public;
    Locație / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    locație ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

fișierul meu php este în ./src/public/

drapel ge
(1) Sunteți sigur că vorbiți direct cu serverul și nu cu un proxy de cache? (2) Ce cale se află în adresa URL cu care testați? (3) Acea cale se potrivește cu un nume de fișier relativ la `/var/www/html/public`? (4) Există `/var/www/html/public/index.php`?
rootShiv avatar
drapel ru
Da fișierul există și acesta funcționează pe localhost. nu am inteles intrebarea ta 1,2. Sunt nou în lucrul cu docker și server în general
drapel ge
Pentru a confirma (1), verificați pur și simplu că _ceva_ apare în `/var/log/nginx/access.log` sau `/var/log/nginx/error.log` când încercați să îl accesați din exterior. Dacă nu, atunci nu vă conectați de fapt la _acest_ server, altceva vă transmite eroarea 403. Prin (2) vreau să spun, adresa URL cu `https://domain.name/` eliminată din față și orice `?query=string` și `#anchor` eliminate la sfârșit.O altă întrebare: prin „lucrarea pe localhost”, vrei să spui că rulezi un client (cum ar fi `curl` sau `wget`) cu o adresă URL ca `https://localhost/src/public/yourpage.php`?
rootShiv avatar
drapel ru
cum accesez `/var/log/nginx/access.log`. Sunt nou în dezvoltarea linux și ops
drapel ge
Există multe _multe_ opțiuni, așa că cel mai simplu este să spui „în același mod în care accesezi `./src/public/yourscript`”

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.