Score:0

nginx ทำงานได้ดีใน localhost แต่แสดง 404 บนเซิร์ฟเวอร์

ธง ru

ฉันมีโครงการที่ใช้ laravel ซึ่งฉันต้องโฮสต์บนมหาสมุทรดิจิทัลโดยใช้นักเทียบท่า นักเทียบท่าทำงานได้ดีบน localhost แต่แสดง 404 บนเซิร์ฟเวอร์ แต่ phpmyadmin ทำงานได้ดีบนเซิร์ฟเวอร์เช่นกันซึ่งทำงานอยู่ 8080 ท่า.

นี่ของฉัน นักเทียบท่า-compose.yml

 รุ่น: '3'

เครือข่าย:
  ลาราเวล:


บริการ:
  จิงซ์:
    รูปภาพ: nginx:stable-alpine
    ชื่อคอนเทนเนอร์: nginx
    พอร์ต:
      - "8088:80"
    ปริมาณ:
      - ./src:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    ขึ้นอยู่กับ:
      - php
      - มายเอสคิวแอล
    เครือข่าย:
      - ลาราเวล

  มายเอสคิวแอล:
    รูป: mysql:5.7.22
    รีสตาร์ท: เว้นแต่จะหยุด
    tty: จริง
    พอร์ต:
      - "4306:3306"
    ปริมาณ:
      - ./mysql:/var/lib/mysql
    สิ่งแวดล้อม:
      MYSQL_ROOT_PASSWORD: "รูท"
      MYSQL_DATABASE: "laravel_test"
      MYSQL_USER: "รูท"
      MYSQL_PASSWORD: "รูท"
      SERVICE_TAGS: "พัฒนา"
      SERVICE_NAME: "mysql"
    เครือข่าย:
      - ลาราเวล

  php:
    สร้าง:
      บริบท: .
      นักเทียบท่าไฟล์: Dockerfile
    ชื่อคอนเทนเนอร์: php.ini
    ปริมาณ:
      - ./src:/var/www/html
    พอร์ต:
      - "9000:9000"
    รีสตาร์ท: เว้นแต่จะหยุด

    เครือข่าย:
      - ลาราเวล

  phpmyadmin:
    ภาพ: phpmyadmin
    รีสตาร์ท: เสมอ
    พอร์ต:
      - 8080:80
    สิ่งแวดล้อม:
      - PMA_ARBITRARY=1
    ลิงค์:
      - มายเอสคิวแอล
    เครือข่าย:
      - ลาราเวล

  npm:
    รูปภาพ: โหนด:18-alpine3.14
    ชื่อคอนเทนเนอร์: npm
    ปริมาณ:
      - ./src:/var/www/html
    working_dir: /var/www/html
    จุดเริ่มต้น: [ 'npm', '--no-bin-links' ]
    เครือข่าย:
      - ลาราเวล

  นักแต่งเพลง:
    ภาพ: ผู้แต่ง: ล่าสุด
    container_name: ผู้แต่ง
    ปริมาณ:
      - ./src:/var/www/html
    working_dir: /var/www/html
    ขึ้นอยู่กับ:
      - php
    เครือข่าย:
      - ลาราเวล

ไฟล์นักเทียบท่า

จาก php:8.1.0-fpm

RUN นักเทียบท่า-php-ext-install pdo pdo_mysql

default.conf

เซิร์ฟเวอร์{
    ฟัง 80;
    ดัชนี index.php index.html;
    server_name localhost;
    error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    รูท /var/www/html/public;
    ที่ตั้ง / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    ตำแหน่ง ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        รวม fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

ไฟล์ php ของฉันอยู่ใน ./src/public/

ge flag
(1) คุณแน่ใจหรือว่าคุณกำลังพูดคุยกับเซิร์ฟเวอร์โดยตรง ไม่ใช่กับพร็อกซีแคช (2) เส้นทางใดที่อยู่ภายใน URL ที่คุณกำลังทดสอบ (3) เส้นทางนั้นตรงกับชื่อไฟล์ที่เกี่ยวข้องกับ `/var/www/html/public` หรือไม่ (4) มี `/var/www/html/public/index.php` อยู่หรือไม่?
rootShiv avatar
ru flag
ใช่ไฟล์มีอยู่และสิ่งนี้ทำงานบน localhost ฉันไม่เข้าใจคำถาม 1,2 ของคุณ ฉันยังใหม่กับนักเทียบท่าและเซิร์ฟเวอร์โดยทั่วไป
ge flag
เพื่อยืนยัน (1) เพียงตรวจสอบว่า _something_ ปรากฏใน `/var/log/nginx/access.log` หรือ `/var/log/nginx/error.log` เมื่อคุณพยายามเข้าถึงจากภายนอก หากไม่ แสดงว่าคุณไม่ได้เชื่อมต่อกับเซิร์ฟเวอร์ _this_ จริง ๆ อาจมีข้อผิดพลาด 403 ป้อนให้คุณ โดย (2) ฉันหมายถึง URL ที่มี `https://domain.name/` ถูกตัดออกด้านหน้า และ `?query=string` และ `#anchor` ใดๆ ก็ถูกตัดส่วนท้ายออกคำถามเพิ่มเติม: โดย "การทำงานบน localhost" คุณหมายถึงคุณกำลังเรียกใช้ไคลเอนต์ (เช่น `curl` หรือ `wget`) ด้วย URL เช่น `https://localhost/src/public/yourpage.php` หรือไม่
rootShiv avatar
ru flag
ฉันจะเข้าถึง `/var/log/nginx/access.log` ได้อย่างไร ฉันยังใหม่กับ linux และ ops ของการพัฒนา
ge flag
มีตัวเลือก _many_ มากมาย ดังนั้นวิธีที่ง่ายที่สุดคือพูดว่า "วิธีเดียวกับที่คุณเข้าถึง `./src/public/yourscript`"

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา