บน พีซีแยกต่างหาก (ซึ่งมี IP ที่เข้าถึงได้ในเครื่องเท่านั้น 192.168.1.148
) ฉันมี 3 คอนเทนเนอร์: นักเทียบท่า_compose_ui
, นักเทียบท่า_compose_web_console
& จิงซ์
คอนเทนเนอร์สองรายการกำลังฟังพอร์ต แต่ยังไม่ได้ส่งต่อ ถึงโฮสต์:
นักเทียบท่า_compose_ui 5000/tcp
นักเทียบท่า_compose_web_console 8888/tcp
Nginx ถูกส่งต่อ:
nginx 0.0.0.0:80->80/tcp, :::80->80/tcp
นักเทียบท่า_compose_ui
& นักเทียบท่า_compose_web_console
อยู่ในเครือข่าย กระดูกสันหลัง
.
จิงซ์
อยู่บนเครือข่าย กระดูกสันหลัง
และ ภายนอก
.
อะไรก็ได้ กระดูกสันหลัง
ไม่ได้หมายถึงการส่งต่อโฮสต์จึงไม่สามารถเข้าถึงได้โดยสาธารณะ
อะไรก็ได้ ภายนอก
มีไว้เพื่อส่งต่อโฮสต์ประชาชนจึงเข้าถึงได้
แก้ไข: เพื่อชี้แจง เมื่อฉันพูดว่าสาธารณะ ฉันหมายถึงภายนอกจากเครื่องโฮสต์ ฉันยังไม่ได้ส่งต่อพอร์ตใด ๆ ไปยังอินเทอร์เน็ตผ่านเราเตอร์เลย
ถ้าฉัน ตรวจสอบ
เครือข่าย กระดูกสันหลัง
ฉันสามารถดูที่อยู่ IP:
nginx 172.21.0.4/16
นักเทียบท่า_compose_ui 172.21.0.2/16
นักเทียบท่า_compose_web_console 172.21.0.3/16
ถ้าฉัน ตรวจสอบ
เครือข่าย ภายนอก
ฉันสามารถดูที่อยู่ IP สำหรับ มิลค์กี้
, 172.22.0.2/16
.
ถ้าผมหยิกจาก จิงซ์
ถึง นักเทียบท่า_compose_ui
:
นักเทียบท่า exec nginx curl http://docker_compose_ui:5000
ฉันได้รับการตอบกลับ html และ ตกลง, ดังนั้น นักเทียบท่า_compose_ui
สามารถเข้าถึงได้จาก จิงซ์
และแก้ไขได้
ถ้าฉันทำ นักเทียบท่า exec nginx nginx -T
ฉันเห็นว่ากำลังโหลดการกำหนดค่าโดย nginx (last เซิร์ฟเวอร์
คำสั่ง).
nginx: ไฟล์การกำหนดค่า /etc/nginx/nginx.conf ไวยากรณ์ใช้ได้
nginx: การทดสอบไฟล์การกำหนดค่า /etc/nginx/nginx.conf สำเร็จ
# ไฟล์กำหนดค่า /etc/nginx/nginx.conf:
# /etc/nginx/nginx.conf
ผู้ใช้ nginx;
# กำหนดจำนวนกระบวนการของผู้ปฏิบัติงานโดยอัตโนมัติตามจำนวนแกน CPU
worker_processes อัตโนมัติ
# เปิดใช้งานการใช้ JIT สำหรับนิพจน์ทั่วไปเพื่อเพิ่มความเร็วในการประมวลผล
pcre_jit บน;
# กำหนดค่าตัวบันทึกข้อผิดพลาดเริ่มต้น
error_log /var/log/nginx/error.log เตือน;
# รวมไฟล์พร้อมคำสั่งในการโหลดโมดูลไดนามิก
รวม /etc/nginx/modules/*.conf;
# ยกเลิกการแสดงความคิดเห็นเพื่อรวมไฟล์ที่มีตัวอย่างการกำหนดค่าในบริบทรูท
# หมายเหตุ: สิ่งนี้จะเปิดใช้งานตามค่าเริ่มต้นใน Alpine 3.15
#include /etc/nginx/conf.d/*.conf;
เหตุการณ์ {
# จำนวนการเชื่อมต่อพร้อมกันสูงสุดที่สามารถเปิดได้
#กระบวนการทำงาน
worker_connections 1024;
}
http {
# ตัวแก้ไข DNS ของนักเทียบท่า
ตัวแก้ไข 127.0.0.11 ipv6=ปิด;
# รวมการแมปนามสกุลไฟล์กับประเภทการตอบสนอง MIME
# และกำหนดประเภทเริ่มต้น
รวม /etc/nginx/mime.types;
แอปพลิเคชัน default_type/octet-stream;
# เนมเซิร์ฟเวอร์ใช้เพื่อแก้ไขชื่อของเซิร์ฟเวอร์อัพสตรีมเป็นที่อยู่
# จำเป็นเช่นกันเมื่อใช้ tcpsocket และ udpsocket ในโมดูล Lua
#resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;
# อย่าบอกเวอร์ชัน nginx แก่ลูกค้า ค่าเริ่มต้นคือ 'เปิด'
ปิด server_tokens;
# ระบุขนาดเนื้อหาที่ยอมรับได้สูงสุดของคำขอของลูกค้า เช่น
# ระบุโดยส่วนหัวของคำขอความยาวเนื้อหา หากระบุเนื้อหา
# ความยาวมากกว่าขนาดนี้ ลูกค้าจะได้รับ HTTP
# รหัสข้อผิดพลาด 413 ตั้งค่าเป็น 0 เพื่อปิดการใช้งาน ค่าเริ่มต้นคือ '1m'
client_max_body_size 1m;
# Sendfile คัดลอกข้อมูลระหว่างหนึ่ง FD และอื่น ๆ จากภายในเคอร์เนล
# ซึ่งมีประสิทธิภาพมากกว่าการอ่าน () + เขียน () ค่าเริ่มต้นปิดอยู่
ส่งไฟล์บน;
# ทำให้ nginx พยายามส่งส่วนหัวตอบกลับ HTTP ในแพ็กเก็ตเดียว
# แทนการใช้เฟรมบางส่วน ค่าเริ่มต้นคือ 'ปิด'
tcp_nopush บน;
# เปิดใช้งานโปรโตคอลที่ระบุ ค่าเริ่มต้นคือ TLSv1 TLSv1.1 TLSv1.2
# เคล็ดลับ: หากคุณไม่จำเป็นต้องสนับสนุนไคลเอนต์เก่า ให้ลบ TLSv1.1
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
# เส้นทางของไฟล์ที่มีพารามิเตอร์ Diffie-Hellman สำหรับรหัส EDH
# เคล็ดลับ: สร้างด้วย: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`
#ssl_dhparam /etc/ssl/nginx/dh2048.pem;
# ระบุว่าควรใช้ชุดรหัสของเรามากกว่ารหัสไคลเอนต์
# ค่าเริ่มต้นคือ 'ปิด'
เปิด ssl_prefer_server_ciphers;
# เปิดใช้งานแคช SSL ที่ใช้ร่วมกันที่มีขนาดที่สามารถเก็บได้ประมาณ 8,000 เซสชัน
# ค่าเริ่มต้นคือ 'ไม่มี'
ssl_session_cache ที่ใช้ร่วมกัน: SSL:2m;
# ระบุช่วงเวลาที่ไคลเอนต์อาจใช้พารามิเตอร์เซสชันซ้ำ
# ค่าเริ่มต้นคือ '5m'
ssl_session_timeout 1 ชั่วโมง;
# ปิดใช้งานตั๋วเซสชัน TLS (ไม่ปลอดภัย) ค่าเริ่มต้นคือ 'เปิด'
ปิด ssl_session_tickets;
# เปิดใช้งาน gzipping ของการตอบสนอง
เปิด gzip;
# ตั้งค่าส่วนหัว Vary HTTP ตามที่กำหนดใน RFC 2616 ค่าเริ่มต้นคือ 'ปิด'
gzip_vary บน;
# ตัวแปรตัวช่วยสำหรับ proxying websockets
แผนที่ $http_upgrade $connection_upgrade {
อัพเกรดเริ่มต้น;
'' ปิด;
}
# ระบุรูปแบบบันทึกหลัก
log_format main '$remote_addr - $remote_user [$time_local] "$request"'
'$สถานะ $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"';
# กำหนดเส้นทาง รูปแบบ และการกำหนดค่าสำหรับการเขียนบันทึกบัฟเฟอร์
access_log /var/log/nginx/access.log หลัก;
# รวมการกำหนดค่าโฮสต์เสมือน
รวม /etc/nginx/sites-enabled/*;
}
# เคล็ดลับ: เลิกแสดงความคิดเห็นหากคุณใช้โมดูลสตรีม
#include /etc/nginx/stream.conf;
# ไฟล์กำหนดค่า /etc/nginx/mime.types:
ประเภท {
ข้อความ/html html htm shtml;
ข้อความ/css css;
ข้อความ/xml xml;
รูปภาพ/gif gif;
รูปภาพ/jpeg jpeg jpg;
แอปพลิเคชัน/จาวาสคริปต์ js;
แอ็พพลิเคชัน/atom+xml อะตอม;
แอปพลิเคชัน/rss+xml rss;
ข้อความ/mathml mml;
ข้อความ/ธรรมดา txt;
text/vnd.sun.j2me.app-descriptor jad;
ข้อความ/vnd.wap.wml wml;
ข้อความ/x-คอมโพเนนต์ htc;
รูปภาพ/png png;
ภาพ/svg+xml svg svgz;
รูปภาพ/tiff tif tiff;
ภาพ/vnd.wap.wbmp wbmp;
รูปภาพ/เว็บเพจ เว็บเพจ;
ไอคอนรูปภาพ/x-icon;
ภาพ/x-jng jng;
ภาพ/x-ms-bmp bmp;
ตัวอักษร/woff woff;
ตัวอักษร/woff2 woff2;
แอปพลิเคชัน / java-archive jar war ear;
แอปพลิเคชัน/json json;
แอปพลิเคชัน/mac-binhex40 hqx;
เอกสารแอปพลิเคชัน/msword;
ใบสมัคร/pdf pdf;
ใบสมัคร/postscript ps eps ai;
แอปพลิเคชัน/rtf rtf;
แอปพลิเคชัน/vnd.apple.mpegurl m3u8;
application/vnd.google-earth.kml+xml kml;
แอปพลิเคชัน/vnd.google-earth.kmz kmz;
แอปพลิเคชัน/vnd.ms-excel xls;
application/vnd.ms-fontobject eot;
แอปพลิเคชัน/vnd.ms-powerpoint ppt;
แอปพลิเคชัน/vnd.oasis.opendocument.graphics odg;
แอปพลิเคชัน/vnd.oasis.opendocument.presentation odp;
application/vnd.oasis.opendocument.spreadsheet ods;
แอปพลิเคชัน/vnd.oasis.opendocument.text odt;
แอปพลิเคชัน/vnd.openxmlformats-officedocument.presentationml.presentation
pptx;
แอปพลิเคชัน/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xlsx;
แอปพลิเคชัน/vnd.openxmlformats-officedocument.wordprocessingml.document
docx;
แอปพลิเคชัน/vnd.wap.wmlc wmlc;
แอปพลิเคชัน/x-7z-บีบอัด 7z;
ใบสมัคร/x-cocoa cco;
แอปพลิเคชัน/x-java-archive-diff jardiff;
แอปพลิเคชัน/x-java-jnlp-file jnlp;
เรียกใช้แอปพลิเคชัน / x-makeself;
แอปพลิเคชัน/x-perl pl pm;
แอปพลิเคชัน/x-pilot prc pdb;
แอปพลิเคชั่น/x-rar-บีบอัด rar;
แอปพลิเคชั่น / x-redhat-package-manager รอบต่อนาที;
ใบสมัคร / ทะเล x-sea;
แอปพลิเคชั่น/x-shockwave-แฟลช swf;
แอปพลิเคชั่น / นั่ง x-stuffit;
ใบสมัคร/x-tcl tcl tk;
ใบสมัคร/x-x509-ca-cert จาก pem crt;
แอปพลิเคชัน/x-xpinstall xpi;
แอปพลิเคชัน/xhtml+xml xhtml;
แอปพลิเคชัน/xspf+xml xspf;
แอปพลิเคชั่น / ซิปซิป;
แอปพลิเคชัน / octet-stream bin exe dll;
แอ็พพลิเคชัน/octet-stream deb;
แอปพลิเคชัน/octet-stream dmg;
แอปพลิเคชั่น/octet-stream iso img;
แอปพลิเคชัน/ออคเต็ตสตรีม msi msp msm;
เสียง/midi กลาง midi kar;
เสียง/mpeg mp3;
เสียง/ogg ogg;
เสียง/x-m4a m4a;
เสียง/x-realaudio ra;
วิดีโอ/3gpp 3gpp 3gp;
วิดีโอ/mp2t ts;
วิดีโอ/mp4 mp4;
วิดีโอ/mpeg mpeg mpg;
วิดีโอ/quicktime mov;
วิดีโอ/เว็บเอ็ม เว็บเอ็ม;
วิดีโอ/x-flv flv;
วิดีโอ/x-m4v m4v;
วิดีโอ/x-mng mng;
วิดีโอ/x-ms-asf asx asf;
วิดีโอ/x-ms-wmv wmv;
วิดีโอ/x-msvideo avi;
}
# ไฟล์การกำหนดค่า /etc/nginx/sites-enabled/_default.conf:
# นี่คือการกำหนดค่าเริ่มต้นของไซต์ซึ่งจะส่งคืน 404 เพื่อป้องกัน
# โอกาสเข้าถึง virtualhost อื่น ๆ
เซิร์ฟเวอร์ {
ฟัง 80 default_server;
ฟัง [::]:80 default_server;
# ทุกอย่างคือ 404
ที่ตั้ง / {
กลับ 404;
}
# คุณอาจต้องใช้สิ่งนี้เพื่อป้องกันการเรียกซ้ำ 404
สถานที่ = /404.html {
ภายใน;
}
}
# ไฟล์กำหนดค่า /etc/nginx/sites-enabled/docker_compose_ui.conf:
เซิร์ฟเวอร์ {
ฟัง 80;
#server_name localhost;
ชื่อเซิร์ฟเวอร์ _;
access_log /var/log/nginx/docker_compose_ui.access.log หลัก;
ตำแหน่ง /นักเทียบท่า-compose-ui/ {
proxy_pass http://docker_compose_ui:5000;
}
ตำแหน่ง /เว็บคอนโซล/ {
proxy_pass http://docker_compose_web_console:8888;
}
ตำแหน่ง /web-console/exec {
proxy_pass http://docker_compose_web_console:8888;
proxy_http_version 1.1;
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ "อัพเกรด";
}
}
การกำหนดค่านักเทียบท่าเขียน (สองไฟล์แยกกัน):
--- # นักเทียบท่า-compose-ui.yml
รุ่น: "3.9"
บริการ:
นักเทียบท่า_compose_ui:
ภาพ: francescou/docker-compose-ui
ชื่อคอนเทนเนอร์: docker_compose_ui
ชื่อโฮสต์: docker_compose_ui
รีสตาร์ท: เว้นแต่จะหยุด
working_dir: /opt/docker-compose-projects
สิ่งแวดล้อม:
- 'WEB_CONSOLE_PATTERN=/web-console/?cid={containerName}&cmd={command}'
ปริมาณ:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/docker-compose-pojects:/data/docker/docker-compose-ui
เครือข่าย:
- กระดูกสันหลัง
เว็บ_คอนโซล:
รูปภาพ: bitbull/docker-exec-web-console
ชื่อคอนเทนเนอร์: นักเทียบท่า_compose_web_console
ชื่อโฮสต์: docker_compose_web_console
รีสตาร์ท: เว้นแต่จะหยุด
สิ่งแวดล้อม:
- 'CONTEXT_PATH=/เว็บคอนโซล/'
อ่านอย่างเดียว: จริง
ปริมาณ:
- /var/run/docker.sock:/var/run/docker.sock
เครือข่าย:
- กระดูกสันหลัง
เครือข่าย:
กระดูกสันหลัง:
ภายนอก: จริง
--- # nginx.yml
รุ่น: "3.9"
บริการ:
จิงซ์:
รูปภาพ: nginx:mainline-alpine
ชื่อคอนเทนเนอร์: nginx
รีสตาร์ท: เว้นแต่จะหยุด
ปริมาณ:
- /data/docker/nginx:/etc/nginx
- /var/log/nginx:/var/log/nginx
- /var/run:/var/run
- /var/cache/nginx
พอร์ต:
- "80:80"
เครือข่าย:
- กระดูกสันหลัง
- ภายนอก
เครือข่าย:
กระดูกสันหลัง:
ภายนอก: จริง
ภายนอก:
ภายนอก: จริง
ทำ http://192.168.1.148/
จากแล็ปท็อปของฉันส่งคืนข้อความมาตรฐาน "ติดตั้ง Nginx แล้ว"
ทำไมถึงเป็นเช่นนั้น http://192.168.1.148/docker-compose-ui/
จากแล็ปท็อปของฉัน ส่งคืนเฉพาะข้อผิดพลาด HTTP 404 หน้าหนังสือ?