NGinx ตั้งค่าตำแหน่ง www สาธารณะเป็นค่าเริ่มต้นหรือไม่


302

/var/www/ฉันได้ทำงานกับอาปาเช่มาก่อนดังนั้นผมทราบว่าเริ่มต้นรากเว็บสาธารณะเป็นปกติ

ฉันเพิ่งเริ่มทำงานกับ nginx แต่ฉันไม่สามารถหารูทเว็บสาธารณะเริ่มต้นได้

ฉันจะหารูทเว็บสาธารณะเริ่มต้นสำหรับ nginx ได้ที่ไหน

คำตอบ:


166

หากการกำหนดค่าของคุณไม่รวมroot /some/absolute/path;คำสั่งหรือรวมถึงคำสั่งที่ใช้เส้นทางสัมพัทธ์เช่นroot some/relative/path;นั้นเส้นทางผลลัพธ์ขึ้นอยู่กับตัวเลือกเวลารวบรวม

อาจเป็นกรณีเดียวที่จะช่วยให้คุณคาดเดาการศึกษาว่าสิ่งนี้มีความหมายสำหรับคุณอย่างไรถ้าคุณดาวน์โหลดและรวบรวมแหล่งที่มาด้วยตัวคุณเอง ในกรณีนั้นเส้นทางจะสัมพันธ์กับสิ่งที่--prefixใช้ /usr/local/nginxหากคุณไม่ได้เปลี่ยนมันเป็นค่าเริ่มต้น คุณสามารถค้นหาพารามิเตอร์ที่ nginx ถูกคอมไพล์ด้วยผ่านnginx -Vซึ่งจะแสดงรายการ--prefixเป็นพารามิเตอร์แรก

ตั้งแต่ค่าเริ่มต้นที่จะสั่งนี้จะแน่นอนส่งผลให้เป็นคำตอบสำหรับคำถามของคุณroothtml/usr/local/nginx/html

อย่างไรก็ตามหากคุณติดตั้ง nginx ด้วยวิธีอื่นการเดิมพันทั้งหมดจะปิด การกระจายของคุณอาจใช้เส้นทางเริ่มต้นที่แตกต่างกันอย่างสิ้นเชิง เรียนรู้ที่จะกำหนดประเภทของค่าเริ่มต้นการกระจายตัวเลือกที่คุณใช้สำหรับสิ่งต่าง ๆ เป็นงานอื่นโดยสิ้นเชิง


32
คุณอาจให้คำใบ้ว่าคุณสามารถใช้ "nginx -V" (ตัวพิมพ์ใหญ่ V) เพื่อค้นหาอาร์กิวเมนต์การกำหนดค่าที่ใช้ในการคอมไพล์ nginx
kaufholdr

1
@kaufholdr ถูกต้องคุณจะพบ --prefix @ Gnarfoz ที่กล่าวถึงมีลักษณะคล้ายกับนี้ --prefix = / usr / share / nginx
Dung

6
นอกจากนี้ยังขึ้นอยู่กับว่ามีการติดตั้งระบบปฏิบัติการใดสำหรับ Amazon Linux ไดเร็กทอรีคือ: / usr / share / nginx / html
jeffmcneill

เส้นทาง - คำนำหน้าไม่ถูกต้องเสมอไป บนเดเบียน 9 nginx ของฉันติดตั้งเส้นทางคำนำหน้าคือ "/ var / www / html" แต่ตามที่ปรากฎเส้นทางเริ่มต้นที่เป็นค่าเริ่มต้นคือ "/ usr / share / nginx / html" การดูไฟล์การกำหนดค่าเริ่มต้นใน / etc / nginx / sites-available / default แสดงให้เห็นว่าพา ธ นั้นเหมือนกับพา ธ --prefix แต่ไฟล์คอนฟิกูเรชันอยู่ที่ /etc/nginx/conf.d/default.conf แสดงรายการรูตเป็น / usr / share / nginx / html ไฟล์ default.conf ใช้ก่อนหน้ากว่าไฟล์เริ่มต้นปกติ ตรวจสอบให้แน่ใจว่าได้ตรวจสอบทั้งไฟล์กำหนดค่าหรือคุณอาจทำงานผิดปกติกับรูท
มนุษย์ถ้ำ

1
nginx -V 2>&1 | grep --color -o -e '--prefix=[^[:space:]]\+'ให้ nginx HOME
sjas

436

ถ้าติดตั้งบน Ubuntu ใช้ apt-get, /usr/share/nginx/wwwลอง

แก้ไข:

ในเวอร์ชันที่ใหม่กว่าพา ธ จะเปลี่ยนเป็น: /usr/share/nginx/html

2019 แก้ไข:

อาจลอง/var/www/html/index.nginx-debian.htmlด้วย


113
nginx 1.4.1 บน Ubuntu อยู่ใน / usr / share / nginx / html
Nick Desaulniers

ฉันเพิ่งติดตั้ง nginx บน Raspberry ไดเรกทอรีเริ่มต้นจะเหมือนกันโดย Lufix +1 ใน raspbian ที่ดาวน์โหลดจาก apt-get
Mitro

4
เพิ่งยืนยันว่าใน CentOS 7.0 มันเป็น / usr / share / nginx / html เช่นกัน
djhaskin987

2
Debian apt-get, check / etc / nginx / available-sites / default, ฉันพบเส้นทางที่นั่น
Chris.Zou

7
ubuntu 16 /var/www/html/index.nginx-debian.html
don bright

65

ไดเรกทอรี Nginx เริ่มต้นใน Debian /var/www/nginx-defaultเป็น

คุณสามารถตรวจสอบไฟล์: /etc/nginx/sites-enabled/default

และค้นหา

server {
        listen   80 default;
        server_name  localhost;

        access_log  /var/log/nginx/localhost.access.log;

        location / {
                root   /var/www/nginx-default;
                index  index.html index.htm;
        }

รูทเป็นตำแหน่งเริ่มต้น


5
ใน CentOS ฉันพบว่าไม่มีโฟลเดอร์ / etc / nginx / sites-enabled / มี /etc/nginx/conf.d/ และมีสองไฟล์ server.conf และ virtual.conf มีรายละเอียดเซิร์ฟเวอร์นี้ คุณสามารถระวังสิ่งนั้นได้เช่นกัน
Nafis Ahmad

1
หากต้องการเพิ่มความคิดเห็นของ Nafis ชื่อไฟล์ในไดเรกทอรี conf.d จะต้องลงท้ายด้วย. conf ไม่เช่นนั้นจะไม่ได้รับ
อีธานโฮเฮนซี

1
สิ่งนี้ใช้ได้เฉพาะเมื่อไซต์เริ่มต้นถูกเปิดใช้งานและตรงกับคำขอ htmlมิฉะนั้นรากเริ่มต้นคือ
OrangeDog

@OrangeDog วิธีการตรวจสอบว่าdefault siteมีการเปิดใช้งาน?
Timo

1
@Timo คำตอบนี้บอกว่าอย่างไร
OrangeDog

43

'รูตเว็บสาธารณะเริ่มต้น' สามารถพบได้จากเอาต์พุต nginx -V:

nginx -V
nginx version: nginx/1.10.1
built with OpenSSL 1.0.2h  3 May 2016
TLS SNI support enabled
configure arguments: --prefix=/var/lib/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/run/nginx/nginx.pid --lock-path=/run/nginx/nginx.lock --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --user=nginx --group=nginx --with-ipv6 --with-file-aio --with-pcre-jit --with-http_dav_module --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_v2_module --with-http_auth_request_module --with-mail --with-mail_ssl_module

ค่า --prefix คือคำตอบของคำถาม สำหรับตัวอย่างด้านบนรูตคือ / var / lib / nginx


1
ใช่สิ่งที่ดีที่สุดและข้ามแพลตฟอร์ม
Jesse Adelman

อาจไม่ถูกต้อง "--prefix" ในบางระบบ แต่อาจไม่ใช่ทั้งหมด ฉันเห็นด้วยกับ nginx -V ให้ข้อมูลมากมายที่จะช่วยติดตามตำแหน่งของไฟล์ แต่ขึ้นอยู่กับระบบปฏิบัติการ IE บน FreeBSD ไม่ได้อยู่ที่ "--prefix" คืออะไร แต่ "/ usr / local / www" และในลินุกซ์ distros บางตัวมันอาจแตกต่างออกไป มันดูดีที่สุดในการกำหนดค่า
Mikec

"คำนำหน้า" เป็นตัวแปรที่กำหนดโดยมาตรฐาน GNU - ดูgnu.org/prep/standards/html_node/Directory-Variables.html
Serge S

"คำนำหน้า" เป็นตัวแปรที่กำหนดโดยมาตรฐาน GNU - ดูgnu.org/prep/standards/html_node/Directory-Variables.html nginx เป็นไปตามมาตรฐาน หากคุณไม่ได้กำหนดรูทหรือตำแหน่งในไฟล์กำหนดค่า (ขึ้นอยู่กับ --conf-path) คำนำหน้าจะแสดงตำแหน่ง 'รูตเว็บสาธารณะเริ่มต้น' และนั่นไม่ได้ขึ้นอยู่กับระบบปฏิบัติการแม้ว่าแพ็คเกจที่มาพร้อมกับการกระจายระบบปฏิบัติการยังสามารถจัดหาการกำหนดค่าที่กำหนด 'รูตเว็บสาธารณะเริ่มต้น' ใหม่
Serge S

ดังนั้นอัลกอริทึม: ค้นหา--conf-pathในเอาต์พุตnginx -V หากตำแหน่ง /หรือรูทไม่ได้ถูกนิยามใหม่ในการตั้งค่า - ใช้ - คำนำหน้าสำหรับตำแหน่ง 'รูตเว็บสาธารณะเริ่มต้น'
Serge S

25

บน Mac OS X การติดตั้ง nginx ด้วย Brew ทำให้ไดเรกทอรีเริ่มต้น:

/usr/local/var/www

ดังนั้น:

root html

วิธี

root /usr/local/var/www/html

ไม่มีไดเรกทอรี html ดังนั้นจะต้องสร้างขึ้นเอง


1
+1 สำหรับการกล่าวถึง macOS และ homebrew แต่ผมพบว่าที่root html, index.htmlและจะใส่โดยตรงใน50x.html /usr/local/var/wwwดังนั้นฉันสงสัยว่ามีhtmlโฟลเดอร์อยู่หรือไม่ คุณช่วยฉันได้ไหม
iplus26

3
"brew info nginx" ให้ docroot อยู่ในรายการเอาท์พุท แต่การระบุ "root html" ในการกำหนดค่า nginx จะเปลี่ยน docroot สำหรับการกำหนดค่า nginx นั้น
freegnu

1
สำหรับฉัน (MAC OS X El Capitan 10.11.5) และก่อ (1.1.5) ไดเรกทอรีคือ/usr/local/Cellar/nginx/1.10.2_1/html ตำแหน่งที่ 1.10.2_1 เป็นเวอร์ชัน nginx
Yogesh Yadav

2
ในชงของฉันติดตั้งไดเรกทอรี Cellar เป็น symlink: /usr/local/Cellar/nginx/1.12.0_1/html -> ../../../var/www/และnginx -V แสดง: --prefix=/usr/local/Cellar/nginx/1.12.0_1ดังนั้นroot htmlจะถูกเปลี่ยนเส้นทางผ่านลิงค์นั้น
Mark Edington

@ iplus26 ไดเรกทอรี html พร้อมใช้งานแล้ว /usr/local/Cellar/nginx/1.12.2_1/html ฉันคิดว่า / usr / local / var / www เพียงลิงก์
Kanagavelu Sugumar

21

คุณสามารถแมปโฟลเดอร์รูทของ nginxกับตำแหน่งของเว็บไซต์ของคุณ:

nano /etc/nginx/sites-enabled/default

ในไฟล์เริ่มต้นค้นหารูทในแท็กเซิร์ฟเวอร์และเปลี่ยนโฟลเดอร์เริ่มต้นของเว็บไซต์ของคุณเช่นเว็บไซต์ของฉันอยู่ที่/ var / www

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /var/www; <-- Here!
...

เมื่อฉันประเมิน nginx, apache2 และ lighttpd ฉันแมปพวกเขาทั้งหมดกับเว็บไซต์ของฉันที่ / var / www ฉันพบสิ่งนี้เป็นวิธีที่ดีที่สุดในการประเมินประสิทธิภาพ

จากนั้นคุณสามารถเริ่ม / หยุดเซิร์ฟเวอร์ที่คุณเลือกและดูว่าเซิร์ฟเวอร์ใดทำงานได้ดีที่สุด

เช่น

service apache2 stop
service nginx start

Btw, nginx จริง ๆ แล้วเร็วมาก!


19

ดังที่ผู้ใช้ส่วนใหญ่ที่นี่กล่าวว่ามันอยู่ภายใต้เส้นทางนี้:

/usr/share/nginx/html

นี่คือเส้นทางเริ่มต้น แต่คุณสามารถทำให้เป็นของคุณได้

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

ตัวอย่างเช่นคุณสามารถทำให้เป็นเช่นนี้:

home_web/site1/public_html/www/

เมื่อใดก็ตามที่คุณสร้างโฮสต์เสมือนใน Nginx คุณสามารถปรับแต่งรูทพา ธ ของคุณเองเพียงเพิ่มสิ่งนี้ในบล็อกเซิร์ฟเวอร์ของคุณ:

 server {
    listen  80;
        server_name  yoursite.com;

root /home_web/site1/public_html/www/;
}

ใช่คุณพูดถูก ฉันเพิ่งติดตั้ง Nginx บน centos7 ของฉันและฉันสังเกตเห็นว่าเส้นทางเริ่มต้นคือ/usr/share/nginx/html/โฟลเดอร์ มีเหตุผลที่จะเปลี่ยนเส้นทางนั้นเลย (เพื่อความปลอดภัยหรือเหตุผลอื่น ๆ )? มันจะโอเคที่จะทิ้งไว้ในโฟลเดอร์เริ่มต้นหรือไม่ถ้าฉันจะเป็นผู้ใช้คนเดียวและถ้าฉันจะไปยังโฮสต์ 1 เว็บไซต์ในนั้น
Neel

ไม่เป็นไรคำถามสุดท้ายของฉัน ฉันลงเอยด้วยการสร้างโฟลเดอร์แยกต่างหากเพราะฉันคิดว่ามันจะดีกว่าถ้าฉันต้องการเพิ่ม vhosts ที่แตกต่างกันในการตั้งค่านี้ในอนาคต วิธีนี้ง่ายกว่า ไชโย :)
Neel

11

โฟลเดอร์เว็บเริ่มต้นสำหรับ nginx ขึ้นอยู่กับวิธีที่คุณติดตั้ง แต่โดยปกติจะอยู่ในตำแหน่งเหล่านี้:

/usr/local/nginx/html
/usr/nginx/html

10

สำหรับรูปภาพ Ubuntu และ docker:

 /usr/share/nginx/html/

แค่อยากรู้อยากเห็นบอกว่าฉันไม่รู้ว่าฉันจะพบสิ่งที่เป็นสถานที่ที่เหมาะสม? มีคำตอบที่แตกต่างกันออกไปมากมาย
Royi Namir

เท่าที่ฉันจำได้ฉันค้นหา "nginx" (คล้ายกับ find / -name nginx) และพบในไดเรกทอรีนี้ (หรือในไดเรกทอรีย่อย) เอกสารที่ปรากฏในเบราว์เซอร์ของฉัน
DimiDak


9

ดัมพ์การกำหนดค่า:

$ nginx -T
...
server {
    ...
    location / {
        root   /usr/share/nginx/html;
        ...
    }
    ...
}

สิ่งที่คุณจะได้รับอาจแตกต่างกันไปขึ้นอยู่กับการnginxกำหนดค่า / ติดตั้งของคุณ

อ้างอิง:

ปรับปรุง: มีความสับสนในเรื่องของถ้า / เมื่อที่เป็นตัวเลือกที่ถูกเพิ่มเข้ามา-T nginxมันได้รับการบันทึกไว้ในหน้าคนโดยVL-Homutovใน 2015 วันที่ 16 มิถุนายนซึ่งเป็นส่วนหนึ่งของการเปิดตัว v1.9.2 มันกล่าวถึงแม้จะอยู่ในบันทึกประจำรุ่น -Tตัวเลือกที่ได้รับในปัจจุบันในทุกnginxการเปิดตัวตั้งแต่ปีรวมทั้งคนหนึ่งที่มีอยู่บน Ubuntu 16.04.1 LTS:

root@23cc8e58640e:/# nginx -h    
nginx version: nginx/1.10.0 (Ubuntu)
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/share/nginx/)
  -c filename   : set configuration file (default: /etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file

ฉันไม่คิดว่ามีธงนี้อยู่คุณอาจต้องอัปเดตคำตอบ
lfender6445

@ ifender6445 ฉันสับสนโดยความคิดเห็นของคุณ ฉันมีสองการอ้างอิงถึงบรรทัดในแหล่งที่มาแต่ละคนแสดง-Tตัวเลือก เป็น-Tตัวเลือกที่ขาดหายไปจากการติดตั้งโดยเฉพาะอย่างยิ่งของคุณหรือไม่ คุณสามารถแสดงอะไรก็ได้เพื่อยืนยันการอ้างสิทธิ์ของคุณ?
rubicks

ใช่มันอาจจะเป็นรุ่นต่าง ๆ ของ nginx? gist.github.com/lfender6445/ed8c5e26db64eba595ae4aaf4d15ee0d
lfender6445

ฉันเห็น. ดูเหมือนว่าฉันใช้ nginx รุ่นเก่ากว่าขอโทษ!
lfender6445

9

มองหาไฟล์กำหนดค่า nginx เพื่อให้แน่ใจ คำสั่งนี้ greps สำหรับสิ่งที่มีการกำหนดค่าในเครื่องของคุณ:

cat /etc/nginx/sites-enabled/default |grep "root"

บนเครื่องของฉันมันเป็น: `root / usr / share / nginx / www;


8

บน Mac ติดตั้ง nginx ด้วย brew:

/usr/local/etc/nginx/nginx.conf

location / { 
    root   html;  # **means /usr/local/Cellar/nginx/1.8.0/html and it soft linked to /usr/local/var/www**
    index  index.html;
}  

8

สำหรับ CentOS, Ubuntu และ Fedora ไดเรกทอรีเริ่มต้นคือ /usr/share/nginx/html


ฉันต้องการราก Nginx var/www/htmlจาก
Dhaduk Mitesh


5

ในกรณีของฉันมันเป็นสิ่งต่อไปนี้ /usr/share/nginx/html

คุณสามารถลองค้นหาด้วยการค้นหา

find / -name html

5

หากคุณอยู่ใน Ubuntu 14.04 คุณสามารถค้นหาไดเรกทอรี nginx www ได้ที่เส้นทางต่อไปนี้:

yusuf@yusuf-he:/usr/share/nginx/html$ pwd
/usr/share/nginx/html
yusuf@yusuf-he:/usr/share/nginx/html$

ขอบคุณสั้นกระชับและแม่นยำ บางครั้งคำอธิบายที่ง่ายที่สุดคือคำอธิบายที่ดีที่สุด
WhyAyala

ฉันต้องการราก Nginx var/www/htmlจาก
Dhaduk Mitesh

5

คุณสามารถค้นหาได้ไม่ว่าพวกเขาจะย้ายไปที่ไหน (ผู้ดูแลระบบย้ายหรือ nginx รุ่นใหม่กว่า)

ค้นหา / - ​​ชื่อ nginx


4

หากคุณต้องการค้นหาโฟลเดอร์สาธารณะรูทสาธารณะของ nginx ที่กำหนดไว้ในเวลารวบรวมคุณสามารถตรวจสอบไฟล์ access.log ของคุณ

  1. เปิด nginx.conf
  2. ค้นหาlog_formatคำสั่ง
  3. ค่าของlog_formatเป็นสตริงแม่แบบที่ใช้ในการเขียนข้อมูลไปยังไฟล์access.log คุณสามารถเพิ่มตัวแปร$ document_rootให้กับสตริงเทมเพลตนี้เพื่อบันทึกตำแหน่งรูท www เริ่มต้นลงในไฟล์

นี่คือตัวอย่างจากส่วน http ของnginx.confด้วยคำสั่งlog_format ที่แก้ไขแล้ว $ document_root จะถูกเพิ่มที่จุดเริ่มต้นของสตริง:

    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;

                  ## ADD $document_root HERE ##
        log_format  main  '$document_root $remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  /var/log/nginx/access.log  main;

        etc. .......
  1. จากนั้นสำรองไฟล์คอนฟิกูเรชันทั้งหมด * .conf ในไดเร็กทอรี conf.d และสร้างไฟล์คอนฟิกูเรชันที่นั่นtest.confด้วยบรรทัดต่อไปนี้:

    server{
        listen 80;
        server_name localhost;
    }
    
    1. เพิ่มบรรทัดต่อไปนี้ในไฟล์ / etc / hosts: 127.0.0.1 localhost

    2. โหลดการกำหนดค่า nginx ซ้ำ: nginx -s reload

    3. ส่งคำขอ GET ไปที่http: // localhost :curl http://localhost

    4. ตรวจสอบสตริงการเข้าถึงล่าสุดล็อก :tail -n 1 /var/log/nginx/access.log

นี่คือตัวอย่างเอาต์พุตของคำสั่งนี้โดยที่/ etc / nginx / htmlเป็นรูทเอกสารเริ่มต้นที่กำหนดในเวลารวบรวม:

    /etc/nginx/html 127.0.0.1 - - [15/Mar/2017:17:12:25 +0200] "GET / HTTP/1.1" 404 169 "-" "curl/7.35.0" "-"

ดูเหมือนว่าใช้งานได้ แต่ไม่ได้รับการแก้ไขฉันเรคคอร์ดสำหรับ * .knexusgroup.com อยู่ใน 54.235.222.119, w3.knexusgroup.comแต่ไม่ได้บันทึกโดเมนใด ๆ <anything> .knexusgroup.com มันทำงานในที่ที่มีคำจำกัดความที่เหมาะสมของ root dir ฉันไม่สามารถเข้าใจได้ว่าปัญหาคืออะไรทำไมฉันไม่สามารถหารูทสำหรับโดเมนย่อยที่ไม่ตรงกับ ngiinx config ใด ๆ
Ramratan Gupta

4

คุณสามารถเข้าถึงไฟล์ config nginx ได้คุณจะเห็นรูท / พา ธ ในค่าเริ่มต้นของ nginx apache ที่/var/www/html


/var/www/htmlเป็นเว็บรูทเริ่มต้นสำหรับ apache ไม่ใช่ nginx
Ethan Hohensens

4

* หน้าเว็บเริ่มต้นที่จัดสรรใน var / www / html * เซิร์ฟเวอร์การกำหนดค่าเริ่มต้น ฯลฯ / nginx / sites / หาได้ / nginx.conf

server {

    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html index.php;

    server_name _;

    location /data/ {
        autoindex on;
    }

    location /Maxtor {
        root /media/odroid/;
        autoindex on;

    }

        # This option is important for using PHP.
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
    }
}

* เซิร์ฟเวอร์ configuracion เริ่มต้น etc / nginx / nginx.conf

เนื้อหา..

user www-data;
worker_processes 8;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

บันทึกการเข้าถึงเริ่มต้นด้วย ip ไคลเอ็นต์ var / log / nginx / ...


3

เพียงสังเกตว่าหน้าดัชนีเริ่มต้นสำหรับเซิร์ฟเวอร์ nginx จะแสดงตำแหน่งรูทด้วยเช่นกัน จาก nginx (1.4.3) บน Amazon Linux AMI คุณจะได้รับสิ่งต่อไปนี้:

นี่คือหน้า index.html เริ่มต้นที่แจกจ่ายด้วย nginx บน Amazon Linux AMI ตั้งอยู่ใน / usr / share / nginx / html

ตอนนี้คุณควรใส่เนื้อหาของคุณในตำแหน่งที่คุณเลือกและแก้ไขคำสั่งการกำหนดค่ารูทในไฟล์การกำหนดค่า nginx /etc/nginx/nginx.conf


3

nginx ของฉันใน Ubuntu คือ "รุ่น nginx: nginx / 1.9.12 (Ubuntu)" และรูทพา ธ คือ / var / www / html /

ข้อมูล Ubuntu คือ: ไม่มีโมดูล LSB รหัสผู้จัดจำหน่าย: Ubuntu คำอธิบาย: Ubuntu 16.04 LTS ที่วางจำหน่าย: รหัสชื่อ 16.04: xenial

ที่จริงแล้วถ้าคุณเพิ่งติดตั้ง nginx บน Ubuntu คุณสามารถไปที่ "/ etc / nginx / sites-available" และตรวจสอบไฟล์เริ่มต้นมีการกำหนดค่าเช่น "root / web / root / path / go / here" และนั่นคือสิ่งที่คุณกำลังมองหา


3

คุณสามารถค้นหาได้ใน / var / www / ที่เป็นไดเรกทอรีเริ่มต้นสำหรับ nginx และ apache แต่คุณสามารถเปลี่ยนได้ ขั้นตอนที่ 1 ไปที่โฟลเดอร์ / etc / nginx / sites-available ต่อไปนี้

ขั้นตอนที่ 2 แก้ไขไฟล์เริ่มต้นที่คุณสามารถหาเซิร์ฟเวอร์บล็อกภายใต้นั้นจะมีชื่อบรรทัดเป็นรากที่เป็นสิ่งที่กำหนดสถานที่





1

ค่าเริ่มต้นจะเกี่ยวข้องกับprefixตัวเลือกของconfigureสคริปต์เมื่อรวบรวม nginx; นี่คือตัวอย่างแปลก ๆ จาก Debian:

% nginx -V | & tr ' ' "\n" | fgrep -e path -e prefix
--prefix=/etc/nginx
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log
--http-proxy-temp-path=/var/lib/nginx/proxy
--http-scgi-temp-path=/var/lib/nginx/scgi
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi
--lock-path=/var/lock/nginx.lock
--pid-path=/var/run/nginx.pid

ต่อจากนั้นค่าเริ่มต้นของrootถูกกำหนดเป็นhtmlไดเรกทอรี (ตามเอกสารของrootคำสั่ง ) ซึ่งเกิดขึ้นภายในprefixซึ่งสามารถตรวจสอบได้โดยดูที่$document_rootตัวแปรจากไฟล์กำหนดค่าแบบง่าย:

# printf 'server{listen 4867;return 200 $document_root\\n;}\n' \
    >/etc/nginx/conf.d/so.10674867.conf

# nginx -s reload && curl localhost:4867
/etc/nginx/html

อย่างไรก็ตามการแจกแจงความชั่วร้ายอย่าง Debian ดูเหมือนจะปรับเปลี่ยนไปเล็กน้อยเพื่อให้คุณได้รับความบันเทิงเพิ่มเติม:

% fgrep -e root -e include /etc/nginx/nginx.conf
    include /etc/nginx/mime.types;
    #include /etc/nginx/naxsi_core.rules;
    #passenger_root /usr;
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

% fgrep -e root -e include \
    /etc/nginx/conf.d/*.conf /etc/nginx/sites-enabled/*
/etc/nginx/conf.d/so.10674867.conf:server{listen 4867;return 200 $document_root\n;}
/etc/nginx/sites-enabled/default:   root /usr/share/nginx/www;
/etc/nginx/sites-enabled/default:       # include /etc/nginx/naxsi.rules
/etc/nginx/sites-enabled/default:   #   root /usr/share/nginx/www;
/etc/nginx/sites-enabled/default:   #   include fastcgi_params;
/etc/nginx/sites-enabled/default:   # deny access to .htaccess files, if Apache's document root
/etc/nginx/sites-enabled/default:#  root html;
/etc/nginx/sites-enabled/default:#  root html;

ดังนั้นในกรณีของ Debian /usr/share/nginx/wwwนี้คุณจะเห็นว่ารากมีการตั้งค่าในที่สุด

แต่อย่างที่คุณเห็นด้วยการกำหนดค่าเซิร์ฟเวอร์ตัวอย่างที่จะให้บริการ$document_rootค่าผ่าน http การกำหนดค่า nginx นั้นง่ายพอที่คุณสามารถเขียนการกำหนดค่าของคุณเองในเรื่องของบรรทัดเดียวหรือสองบรรทัดระบุสิ่งที่จำเป็นrootเพื่อตอบสนองความต้องการที่แน่นอนของคุณ


มันหมายความว่าอะไรroot html;ฉันหมายถึงเส้นทางที่แท้จริงคืออะไร?
Ramratan Gupta

1
@ RamratanGupta คุณไม่ได้อ่านคำตอบหรือไม่? บรรทัดแรกสุดแสดงว่าพา ธ นั้นสัมพันธ์กับการตั้งค่าคำนำหน้าเวลาคอมไพล์
cnst

1

ฉันยังมีปัญหาเกี่ยวกับ Digital Ocean ที่ใช้เว็บไซต์ WordPress กับ nginx

วิธีแก้ปัญหาของฉันคือทำสิ่งต่อไปนี้:

  1. แก้ไข/etc/nginx/nginx.confไฟล์ด้วยต่อไปนี้:
server {
root /var/www/html;
}

ฉันต้องไปแล้ว sudo service nginx restart

nginx -Vคำสั่งยังแสดงให้คุณเห็นว่าไฟล์ตั้งค่า nginx ของคุณอยู่ที่ใด (เหมืองถูกชี้ไปที่/etc/nginx/nginx.conf)


0

Alpine Linux ไม่มีตำแหน่งเริ่มต้นใด ๆ เลย ไฟล์/etc/nginx/conf.d/default.confบอกว่า:

# Everything is a 404
location / {
    return 404;
}

# You may need this to prevent return 404 recursion.
location = /404.html {
    internal;
}

แทนที่พวกเขาด้วยบรรทัดที่ต้องการroot /var/www/localhost/htdocsชี้ไปยังไดเรกทอรีที่คุณต้องการ จากนั้นsudo service nginx restartให้ทำการรีสตาร์ท


1
ไม่จริง. เพิ่งลองnginx:alpineภาพล่าสุดและให้บริการเนื้อหาจาก/usr/share/nginx/htmlนอกกรอบ
Jimbali

1
ฟังดูเหมือนภาพ Docker ที่ผลิตโดยโครงการ nginx ซึ่งเพิ่งเกิดขึ้นเมื่อใช้ Alpine Linux เป็นระบบปฏิบัติการพื้นฐาน เมื่อคุณติดตั้ง Alpine Linux เป็นระบบปฏิบัติการหลักของคุณและทำการapk add nginxติดตั้ง nginx ด้วยตนเองจากผู้จัดการแพ็คเกจของอัลไพน์คุณจะได้รับสถานการณ์ที่อธิบายไว้ในคำตอบของฉัน
Lassi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.