การแบ่งปันซ็อกเก็ตยูนิกซ์ผ่านทางนักเทียบท่าปริมาณ - สิทธิ์ถูกปฏิเสธ


18

ฉันพยายามแชร์php5-fpmซ็อกเก็ตของฉันผ่านไดรฟ์ข้อมูลกับnginxเว็บเซิร์ฟเวอร์ของฉัน Fpm และ nginx กำลังทำงานในคอนเทนเนอร์ที่แตกต่างกันและฉันต้องการให้พวกเขาทำงานผ่านไดรฟ์ข้อมูลที่ใช้ร่วมกันที่ฉันวางไฟล์ซ็อกเก็ตจาก fpm

2014/04/13 10:53:35 [crit] 33#0: *1 connect() to unix:/container/fpm/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.8.2, server: docker.dev, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/container/fpm/run/php5-fpm.sock:", host: "docker.dev"

ฉันพยายามแล้วตั้งค่าสิทธิ์ 777 และการเปลี่ยนแปลงของกลุ่มที่จะphp5-fpm.socketwww-data

Dockerfile ของคอนเทนเนอร์ fpm

FROM ubuntu:13.10

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y php5-cli php5-common
RUN apt-get install -y php5-fpm php5-cgi

ADD ./php-fpm.conf /etc/php5/fpm/php-fpm.conf
ADD ./pool.d/www.conf /etc/php5/fpm/pool.d/www.conf
ADD ./php.ini /etc/php5/fpm/php.ini

CMD ["/usr/sbin/php5-fpm"]

Dockerfile ของคอนเทนเนอร์ nginx

FROM ubuntu:13.10

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y nginx

ADD ./test.php /var/test/test.php
ADD ./test.html /var/test/test.html
ADD ./nginx.conf /etc/nginx/nginx.conf
ADD ./site /etc/nginx/sites-enabled/test

EXPOSE 80

CMD ["/usr/sbin/nginx"]

ฉันสามารถเข้าถึงได้test.htmlแต่เมื่อเข้าถึงtest.phpฉันจะได้รับ 502 Bad Gateway

มีอะไรอีกบ้างที่ฉันต้องใส่ใจเกี่ยวกับการอนุญาตเมื่อแชร์เนื้อหาผ่านวอลลุ่ม?


คุณจะเริ่มภาชนะเหล่านี้ได้อย่างไร
cpuguy83

ตรวจสอบสิทธิ์ในไดเรกทอรีที่มี
Aryeh Leib Taurog

คำตอบ:


5

คอนเทนเนอร์ที่แตกต่างกันไม่สามารถพูดคุยกันผ่านซ็อกเก็ตโดเมน UNIX เมื่ออยู่ในเนมสเปซเครือข่ายที่ต่างกัน มีแพตช์เคอร์เนลแบบไม่เป็นทางการที่อนุญาตสิ่งนี้ แต่คุณใช้ด้วยตัวเองหากคุณใช้งาน


12

ตอนนี้เป็นปี 2558 และฉันคิดว่าเคอร์เนลแพทช์ที่ไมเคิลพูดถึงทำให้มันกลายเป็นเคอร์เนลที่เสถียร ฉันมีตัวอย่างการทำงานของ 2 นักเทียบท่าคอนเทนเนอร์หนึ่งที่มี php-fpm และอื่น ๆ ที่มี nginx พูดคุยกันผ่านซ็อกเก็ตยูนิกซ์

ดู: https://github.com/brad-jones/conductor/tree/master/example-project

กุญแจสำคัญในการทำงานแม้ว่าจะเปิดสิทธิ์ในซ็อกเก็ต

เช่นlisten.mode = 0777ใน/etc/php-fpm.d/www.conf

ดูเหมือนจะไม่สำคัญว่า Listen.owner & Listen.group นั้นถูกตั้งค่าไว้ที่ใด ซ็อกเก็ตจำเป็นต้องถูก จำกัด อย่างสมบูรณ์ฉันเดาเพราะผู้ใช้ในภาชนะหนึ่งแม้ว่ามันจะมีชื่อเดียวกันในภาชนะอื่นก็ยังถือว่าเป็นผู้ใช้ที่แตกต่างกัน


5
ในตัว จำกัด ประสบการณ์การใช้งานของฉันไม่สามารถทำการค้นหาชื่อสำหรับผู้ใช้หรือค่อนข้างจะไม่รวมอยู่ในสถาปัตยกรรมการกำหนดคอนเทนเนอร์ ดูเหมือนว่า uid ของผู้ใช้ในคอนเทนเนอร์เป็นสิ่งที่สำคัญ หากคุณพยายามที่จะทดสอบอีกครั้งด้วยสิทธิ์ที่ จำกัด ตรวจสอบให้แน่ใจว่าการจับคู่ของ UID ทั้งภายในและภายนอกภาชนะ
ThorSummoner

0

เพิ่ม. /test.php / วาร์ / การทดสอบ / test.php ในคอนเทนเนอร์fpm

ต้องแปล php เพื่อแสดงใช่ไหม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.