คำถามติดแท็ก nginx

Nginx ("eNgine x") เป็นเซิร์ฟเวอร์ HTTP น้ำหนักเบาประสิทธิภาพสูงพร็อกซีย้อนกลับพร็อกซีสตรีมพร็อกซี TCP และพร็อกซีเมลซึ่งวางจำหน่ายภายใต้สิทธิ์ใช้งาน BSD

1
403 ต้องห้ามเมื่อพยายามเข้าถึงหน้าทดสอบอย่างง่ายของฉัน
ฉันเพิ่งติดตั้ง nginx และฉันพยายามตั้งค่าไซต์แรกของฉัน ฉันพยายามใช้ nginx กับ php-fpm มีการติดตั้ง nginx (เมื่อฉันไปที่ ip ของฉันฉันได้รับการต้อนรับเริ่มต้นไปที่หน้า nginx) ตอนนี้ฉันกำลังพยายามทำให้สคริปต์ทำงานง่าย: <?php phpinfo(); แต่ฉันกดปุ่มหน้า 403 ที่ต้องห้ามต่อไปเรื่อย ๆ ในบันทึกของโฮสต์เสมือนของฉันฉันเห็นบรรทัดจำนวนมากเช่น: 2012/05/18 01:29:45 [error] 4272#0: *1 access forbidden by rule, client: x.170.147.49, server: example.com, request: "GET / HTTP/1.1", host: "example.com" ไฟล์เป็น/srv/www/test/index.phpของ nginx ซึ่งเป็นเจ้าของ (ฉันไปว่าเป็น777เส้นทางที่สมบูรณ์รวมถึงไฟล์ที่ไม่มีประโยชน์) ฉันได้ตรวจสอบว่า nginx ทำงานภายใต้ผู้ใช้และกลุ่มnginx/nginxในการกำหนดค่าและเป็น ใน nginx.conf ฉันได้เปลี่ยนพา …
13 nginx 

2
การแชร์ทรัพยากรข้ามแหล่งกำเนิด (CORS) ด้วย nginx / chrome
ฉันมีเว็บไซต์ที่มีการแบ่งกลุ่มดังต่อไปนี้: api.example.com developers.example.com example.com ผมอยากจะช่วยให้ทั้งสองexample.comและdevelopers.example.comจะทำให้การร้องขอ AJAX api.example.comเพื่อ การกำหนดค่า nginx ของฉันจนถึงตอนapi.example.comนี้ซึ่งเป็นแอป Rack ที่ให้บริการโดยยูนิคอร์นดูเหมือนว่า: upstream app_server { server unix:/tmp/api.example.com.sock fail_timeout=0; } server { listen 80; server_name api.example.com; access_log /home/nginx/api.example.com/log/access.log; error_log /home/nginx/api.example.com/log/error.log; location / { add_header 'Access-Control-Allow-Origin' 'http://example.com,http://developers.example.com'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Headers' 'Content-Type,Accept'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE'; proxy_set_header X-Forwarded-For …
13 nginx 

2
หน้าบำรุงรักษาบน nginx แนวทางปฏิบัติที่ดีที่สุด
ฉันต้องการกำหนดค่าเซิร์ฟเวอร์ให้แสดงหน้าการบำรุงรักษาเมื่อมีอยู่ ฉันลองใช้รหัสนี้และใช้งานได้: location / { try_files /maintenance.html $uri $uri/ @codeigniter; } แต่ฉันสังเกตเห็นว่ามันจะได้รับรหัสสถานะ 200 และอาจทำให้เกิดความสับสนกับเครื่องมือค้นหา ฉันคิดว่าวิธีปฏิบัติที่ดีที่สุดคือส่งคืนรหัสสถานะ 503 ใน google ผมพบหน้าเว็บที่เกี่ยวข้องหลายประการเกี่ยวกับมันเช่นนี้ อย่างไรก็ตามพวกเขาใช้หากจะทำการเปลี่ยนเส้นทางและตามเอกสาร nginx มันไม่ปลอดภัยที่จะใช้ ifs มีวิธีการทำโดยไม่ใช้ถ้า? ปลอดภัยหรือไม่หากใช้ในกรณีนี้ ขอบคุณ

3
Nginx เริ่มปัญหาใหม่
ทั้งหมดในทันทีเมื่อรีสตาร์ท Nginx ฉันได้รับข้อผิดพลาดดังต่อไปนี้: การรีสตาร์ท nginx: [การแจ้งเตือน]: ไม่สามารถเปิดไฟล์บันทึกข้อผิดพลาด: open () "/var/log/nginx/error.log" ล้มเหลว (13: ปฏิเสธการอนุญาต) 2011/02/16 17:20:58 [เตือน] 23925 # 0: คำสั่ง "ผู้ใช้" จะสมเหตุสมผลถ้ากระบวนการหลักทำงานด้วยสิทธิ์ผู้ใช้ระดับสูงโดยไม่สนใจใน /etc/nginx/nginx.conf:1 ไฟล์การกำหนดค่า /etc/nginx/nginx.conf ไวยากรณ์นั้นใช้ได้ 2011/02/16 17:20:58 [ฉุกเฉิน] 23925 # 0: open () "/var/run/nginx.pid" ล้มเหลว (13: ปฏิเสธการอนุญาต) การกำหนดค่าไฟล์ /etc/nginx/nginx.conf การทดสอบล้มเหลว ที่ส่วนหน้าของเว็บไซต์โหลด แต่บางไฟล์เช่น CSS โดยเฉพาะไม่โหลด มีอยู่ในเซิร์ฟเวอร์ แต่เมื่อโหลดทรัพยากรโดยตรงใน Chrome พวกเขาจะพูดว่า "ไม่พบหน้านี้เลย" …
13 terminal  nginx 

1
Apache MPMs - Worker vs Prefork
ฉันพยายามคิดว่า Apache MPM ที่ดีที่สุดที่ฉันสามารถติดตั้งบน VPS ของฉันได้คืออะไร ฉันเห็นมาตรฐานและ MPM Worker ทำงานได้ดีกว่า Prefork แต่ด้วยเหตุผลบางอย่างที่ทุกคนแนะนำให้ใช้ Prefork มากกว่า Worker สำหรับการตั้งค่า PHP นี่เป็นเพราะฟังก์ชั่น PHP บางอันไม่ปลอดภัยต่อเธรดหรือไม่? เพียง แต่setlocale()มาถึงใจ แต่ฉันจะใช้สถานที่เดียวกันในทุกกรณีดังนั้นผมจึงไม่คิดว่าจะเป็นปัญหา VPS ของฉันมีหน่วยความจำน้อยและฉันรู้สึกว่า MPM ของคนงานจะเหมาะกับความต้องการของฉันมากขึ้น แต่ฉันไม่แน่ใจ บางคนสามารถช่วยฉันตัดสินใจเรื่องนี้ได้ไหม ขอบคุณ! PS:ฉันก็ดู nginx และ lighttpd nginx ดูยอดเยี่ยม แต่ฉันพยายามหลีกเลี่ยงการคอมไพล์จากแหล่งที่มาและฉันยังไม่เข้าใจว่า php-fpm มีไว้เพื่ออะไร เกี่ยวกับ lighttpd - มันง่ายอย่างเหลือเชื่อในการติดตั้ง PHP / FCGI ด้วย แต่ฉันได้ยินมาว่าหน่วยความจำรั่ว สิ่งนี้ยังคงเป็นจริงหรือไม่?

3
Nginx เขียน URL ใหม่เฉพาะในกรณีที่ไฟล์มีอยู่
ฉันต้องเขียนกฎการเขียนซ้ำสำหรับ Nginx ดังนั้นหากผู้ใช้พยายามไปที่ URL รูปภาพเก่า: /images/path/to/image.png และไฟล์ไม่มีอยู่ลองเปลี่ยนเส้นทางไปที่: /website_images/path/to/image.png หากรูปภาพนั้นมีอยู่ใน URL ใหม่มิฉะนั้นจะดำเนินการต่อด้วย 404 เวอร์ชันของ Nginx บนโฮสต์ของเรายังไม่มีไฟล์ try_files
13 nginx  rewrite 

4
วานิช Nginx Nginx Django?
ฉันมีแอพ django และฉันต้องการตั้งค่า Varnish บนเซิร์ฟเวอร์ที่อยู่ตรงหน้า ในกระทู้เซิร์ฟเวอร์อื่นผิดใครบางคนแนะนำให้วาง Nginx หน้าวานิช ฉันควรวาง Nginx ไว้หน้า Varnish บนเซิร์ฟเวอร์แคชหรือไม่ ถ้าเป็นเช่นนั้นฉันควรใช้ Nginx บนเซิร์ฟเวอร์แอปหรือไม่
13 nginx  django  varnish 

2
วิธีการแยกการกำหนดค่า nginx ข้ามหลายบรรทัด?
โดยเฉพาะอย่างยิ่งเมื่อกำหนดค่าส่วนหัวHPKP (หรือส่วนหัวแบบยาวอื่น ๆ โดยทั่วไป) จะเป็นประโยชน์ในการแบ่งบรรทัดในการกำหนดค่า nginx ผ่านหลายบรรทัด นี่คือผลลัพธ์ที่ต้องการ: pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g="; อย่างไรก็ตามสำหรับเบราว์เซอร์ควรเป็นหนึ่งบรรทัดเท่านั้น: pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g="; ดังนั้นฉันจึงลองทำบางสิ่ง แต่ไม่พอใจกับผลลัพธ์ที่ได้ ... ลองครั้งแรก: เพียงแค่แยกมัน add_header Public-Key-Pins ' pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g="; ' ทำงานได้ แต่curlฉันเห็นว่าเบราว์เซอร์ได้รับส่วนหัวพร้อมตัวแบ่งบรรทัดทั้งหมด ... ลองครั้งที่สอง: แบ็กสแลช จริง ๆ แล้วในบทความเชื่อมโยงแล้ว Scott Helme แนะนำสิ่งนี้: add_header Public-Key-Pins ' …

4
ตัววิเคราะห์บันทึกสำหรับ nginx [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับข้อบกพร่องของเซิร์ฟเวอร์ ปิดให้บริการใน6 เดือนที่ผ่านมา ฉันมีเว็บแอปที่ทำงานด้วย nginx และฉันต้องการวิเคราะห์บันทึกเพื่อรับข้อมูลเกี่ยวกับจำนวนครั้งที่แต่ละไฟล์ได้รับและ 404s และข้อผิดพลาดอื่น ๆ ที่เรากำลังสร้าง (สิ่งที่ Google Analytics ไม่สามารถให้ได้) ปกติฉันจะวาง awstats ในเซิร์ฟเวอร์ แต่ด้วย nginx เนื่องจากการขาด cgi-bin มันไม่สำคัญ มีวิธีแก้ปัญหาเล็กน้อยอื่นในการรับข้อมูลนี้หรือไม่? ฉันไม่สนใจที่จะจ่ายเงินให้บุคคลที่สามเพื่อทำการวิเคราะห์นี้สำหรับฉัน
13 nginx 

2
Nginx - ส่งต่อ HTTP AUTH - ผู้ใช้หรือไม่
ฉันมีปัญหากับ Nginx และ Jenkins (ฮัดสัน) ฉันพยายามใช้ Nginx เป็น Reverse Proxy สำหรับอินสแตนซ์ Jenkins ด้วย HTTP Basic Authentication มันทำงานได้จนถึงตอนนี้ แต่ฉันไม่รู้ว่าจะส่ง Header ด้วยชื่อผู้ใช้รับรองความถูกต้องได้อย่างไร location / { auth_basic "Restricted"; auth_basic_user_file /usr/share/nginx/.htpasswd; sendfile off; proxy_pass http://192.168.178.102:8080; proxy_redirect default; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-User $http_authorization; proxy_max_temp_file_size 0; #this is the …

2
การแคชพร็อกซี Nginx - วิธีการตรวจสอบว่ามันทำงานได้หรือไม่
ฉันได้ตั้งค่าไฟล์ nginx.conf ของฉันเพื่อใช้การแคชพร็อกซีจากบทเรียนที่ฉันพบทางออนไลน์ ตอนนี้ฉันกำลังพยายามหาวิธีตรวจสอบว่ามันใช้งานได้จริงหรือไม่ ฉันได้อ่านบางแห่งที่เพิ่มadd_header X-Cache-Status $upstream_cache_status;ไปยังไฟล์กำหนดค่าในส่วนเซิร์ฟเวอร์ควรเพิ่มส่วนหัวแคชในการตอบสนองที่จะแสดงว่ามันมาจากแคช (มีค่าเป็น HIT, MISS หรือ EXPIRED) ฉันต้องการทราบว่าฉันสามารถดูส่วนหัวนี้ได้ที่ไหน (และความคุ้มค่า) เช่นเดียวกับถ้านี่เป็นวิธีที่ถูกต้อง / หากมีวิธีอื่น ฉันใหม่มากกับเทคโนโลยีเว็บโดยทั่วไปขอโทษถ้านี่เป็นคำถาม noob ขอบคุณ!

4
การปรับใช้แอป Django ด้วย Nginx, Apache, mod_wsgi
ฉันมีแอพ django ที่สามารถเรียกใช้ในเครื่องโดยใช้สภาพแวดล้อมการพัฒนามาตรฐาน ตอนนี้ฉันต้องการย้ายสิ่งนี้ไปยัง EC2 เพื่อการผลิต เอกสาร django แนะนำให้รันด้วย apache และ mod_wsgi และใช้ nginx สำหรับการโหลดไฟล์คงที่ ฉันใช้ Ubuntu 12.04 บนกล่อง Ec2 แอพ Django ของฉัน "ddt" มีไดเรกทอรีย่อย "apache" พร้อม ddt.wsgi import os, sys apache_configuration= os.path.dirname(__file__) project = os.path.dirname(apache_configuration) workspace = os.path.dirname(project) sys.path.append(workspace) sys.path.append('/usr/lib/python2.7/site-packages/django/') sys.path.append('/home/jeffrey/www/ddt/') os.environ['DJANGO_SETTINGS_MODULE'] = 'ddt.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() …

2
ความแตกต่างที่สำคัญระหว่าง SSI (รวมฝั่งเซิร์ฟเวอร์) และ ESI (รวมถึงขอบด้านข้าง)
ฉันจำเป็นต้องรวมเนื้อหาแบบไดนามิกในหน้าคงที่ในระดับเซิร์ฟเวอร์เว็บ 2 ตัวเลือกที่ฉันได้พบServer Side Include (SSI)และEdge Side Include (ESI). ในขณะที่ต้นกำเนิดของSSIดูเก่าและคลุมเครือ ( หน้าแคชจาก 95 จาก University of Illinois น่าจะเป็นข้อมูลอ้างอิงที่เห็นได้ชัดว่ามันมาจากNCSA httpdเว็บเซิร์ฟเวอร์ที่ใช้อำนาจประมาณ 95% ของสุทธิ ) ที่ESIดูเหมือนล่าสุดและชื่นชมยินดี ( w3 ข้อมูลจำเพาะจากปี 2001 ส่วนใหญ่เขียนโดยผู้ชายจาก Akamai ) นอกจากนี้ฉันยังได้ยินเกี่ยวกับVarnish+ESIและฉันก็สงสัยว่าควรจะเป็นเช่นนั้นหรือไม่ แต่ฉันมีการติดตั้งในสถานที่nginxซึ่งสนับสนุนเฉพาะSSI,และต้องการที่จะทำตามKISSหลักการและหลีกเลี่ยงการใช้Varnishถ้าเป็นไปได้ สำหรับกรณีการใช้งานทันทีของฉันซึ่งจะรวมแถบผู้ใช้แบบไดนามิกที่ด้านบนของแต่ละหน้าฉันเชื่อว่าSSIจะทำงาน อย่างไรก็ตามฉันกังวลว่าเมื่อเว็บไซต์ของฉันเติบโตขึ้นฉันจะต้องใช้คุณสมบัติที่สนับสนุนเท่านั้นESIซึ่งจะบังคับให้ฉันต้องออกแบบใหม่ทุกอย่างซึ่งนำฉันมาที่คำถามของฉัน (ในที่สุดผู้อ่านบอกว่า): อะไรคือคุณสมบัติหลักที่ไม่รองรับSSIซึ่งจะทำให้คุณเลือกESI(และในทางกลับกัน)?

3
nginx เขียนใหม่ต่อท้ายพารามิเตอร์ที่ท้าย url
ฉันต้องกำหนดค่าพร็อกซีย้อนกลับของฉันเพื่อที่จะเพิ่มพารามิเตอร์ต่อไปนี้ในตอนท้ายของ url: &locale=de-de เกือบจะใช้งานได้: rewrite ^(.*)$ $1&locale=de-de break; อย่างไรก็ตามปัญหาคือฉันต้องผนวก '& locale = de-de' เฉพาะเมื่อยังไม่มีอยู่และถ้ามี '?' ใน URL ... ฉันสามารถขอความช่วยเหลือในการกำหนด regex ที่ถูกต้องเพื่อทำสิ่งนี้ได้ไหม? คำถามอื่น: ทำไมเครื่องหมายคำถามใน URL ของฉันไม่แสดงถ้าฉันใช้สิ่งนี้: $ uri? $ args หรือ $ uri $ is_args $ args แปล URL ที่ไม่ได้เข้ารหัสและเครื่องหมายคำถามจะแสดงเป็น% 3f ไอเดีย? แก้ไข: ดูเหมือนว่าพฤติกรรมนี้มีอยู่ในขณะที่ใช้ร่วมกับ proxy_pass ในการเขียนง่าย ๆ มันใช้งานได้ดีจริงๆ
13 nginx  regex 

3
วิธีปฏิเสธการเข้าถึงทรัพยากรตามส่วนหัว X-forwarded-for
ฉันพยายาม จำกัด การเข้าถึงทรัพยากรที่อยู่เบื้องหลัง Nginx โดยอ้างอิงจาก IP ของลูกค้าที่ส่งผ่านในส่วนหัว X-forwarded-for Nginx กำลังทำงานอยู่ในคอนเทนเนอร์บน Kubernetes Cluster บน Google Cloud Platform และ ips ไคลเอ็นต์จริงจะถูกส่งผ่านในส่วนหัวแบบส่งต่อสำหรับ x เท่านั้น จนถึงตอนนี้ฉันจัดการเพื่อทำ IP เดียวด้วยรหัสต่อไปนี้: set $allow false; if ($http_x_forwarded_for ~* 123.233.233.123) { set $allow true; } if ($http_x_forward_for ~* 10.20.30.40) { set $allow false; } if ($allow = false) { …
13 nginx 

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