NGinx Vị trí www công khai mặc định?


303

Tôi đã làm việc với Apache trước đây, vì vậy tôi biết rằng root web công khai mặc định là điển hình /var/www/.

Gần đây tôi đã bắt đầu làm việc với nginx, nhưng dường như tôi không thể tìm thấy root web công khai mặc định.

Tôi có thể tìm root web công khai mặc định cho nginx ở đâu?

Câu trả lời:


166

Nếu cấu hình của bạn không bao gồm một root /some/absolute/path;câu lệnh hoặc nó bao gồm một câu lệnh sử dụng một đường dẫn tương đối nhưroot some/relative/path; , thì đường dẫn kết quả phụ thuộc vào các tùy chọn thời gian biên dịch.

Có lẽ là trường hợp duy nhất cho phép bạn đưa ra một phỏng đoán có giáo dục về việc điều này có ý nghĩa gì với bạn, nếu bạn tự tải xuống và biên dịch nguồn. Trong trường hợp đó, các đường dẫn sẽ liên quan đến bất cứ thứ gì --prefixđược sử dụng. Nếu bạn không thay đổi nó, nó mặc định là /usr/local/nginx. Bạn có thể tìm thấy các tham số nginx được biên dịch thông qua nginx -V, nó liệt kê --prefixlà tham số đầu tiên.

Kể từ khi các rootgiá trị mặc định chỉ đểhtml , điều này sẽ, tất nhiên, dẫn đến/usr/local/nginx/html là câu trả lời cho câu hỏi của bạn.

Tuy nhiên, nếu bạn cài đặt nginx theo bất kỳ cách nào khác, tất cả các cược đã tắt. Phân phối của bạn có thể sử dụng các đường dẫn mặc định hoàn toàn khác nhau. Học cách tìm ra loại mặc định phân phối lựa chọn của bạn sử dụng cho mọi thứ là một nhiệm vụ hoàn toàn khác.


32
Bạn có thể đưa ra một gợi ý rằng bạn có thể sử dụng "nginx -V" (chữ hoa V) để khám phá các đối số cấu hình được sử dụng để biên dịch nginx.
kaufkeepr

1
@kaufkeepr là chính xác, bạn sẽ tìm thấy --prefix @ Gnarfoz được đề cập có vẻ tương tự như thế này --prefix = / usr / share / nginx
Dung

6
Điều này cũng phụ thuộc vào việc cài đặt hệ điều hành nào, đối với Amazon Linux, thư mục là: / usr / share / nginx / html
jeffmcneill

Đường dẫn --prefix không phải lúc nào cũng đúng. Trên debian 9 nginx của tôi, cài đặt đường dẫn tiền tố là "/ var / www / html" nhưng hóa ra đường dẫn mặc định chính là "/ usr / share / nginx / html". Nhìn vào tệp cấu hình mặc định trong / etc / nginx / site-Available / default cho thấy đường dẫn giống với đường dẫn --prefix. Nhưng tệp cấu hình nằm ở /etc/nginx/conf.d/default.conf đã liệt kê gốc là / usr / share / nginx / html. Tệp default.conf có tiền lệ so với tệp mặc định thông thường. Hãy chắc chắn kiểm tra cả hai tập tin cấu hình hoặc bạn có thể đang làm việc với root sai.
Caveman

1
nginx -V 2>&1 | grep --color -o -e '--prefix=[^[:space:]]\+'cung cấp cho bạn nginx HOME.
sjas

436

Nếu cài đặt trên Ubuntu bằng apt-get, hãy thử /usr/share/nginx/www.

BIÊN TẬP:

Trên các phiên bản gần đây hơn, đường dẫn đã thay đổi thành: /usr/share/nginx/html

EDIT 2019:

Có thể thử /var/www/html/index.nginx-debian.htmlquá.


113
nginx 1.4.1 trên Ubuntu nằm trong / usr / share / nginx / html
Nick Desaulniers

Tôi vừa cài đặt nginx trên Raspberry, thư mục mặc định được viết bởi Lufix +1. Trên raspbian được tải xuống từ apt-get
Mitro

4
Chỉ cần xác nhận rằng trên CentOS 7.0, đó là / usr / share / nginx / html
djhaskin987

2
Debian apt-get, check / etc / nginx / Available-site / default , Tôi tìm thấy đường dẫn ở đó.
Chris.Zou

7
ubfox 16 /var/www/html/index.nginx-debian.html
don sáng

65

Thư mục Nginx mặc định trên Debian là /var/www/nginx-default .

Bạn có thể kiểm tra tệp: /etc/nginx/sites-enabled/default

và tìm

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;
        }

Các gốc là vị trí mặc định.


5
Trong CentOS, tôi thấy rằng không có thư mục / etc / nginx / sites-enable /. có /etc/nginx/conf.d/ và có hai tệp server.conf và virtual.conf có chi tiết máy chủ này. Bạn có thể xem ra cho điều đó cũng.
Nafis Ahmad

1
Để thêm vào nhận xét của Nafis, tên tệp trong thư mục conf.d phải kết thúc bằng .conf nếu không chúng sẽ không được chọn.
Ethan Hohensee

1
Điều này chỉ áp dụng nếu trang web mặc định được bật và phù hợp với yêu cầu. Nếu không thì root mặc định là html.
OrangeDog

@OrangeDog Làm thế nào để kiểm tra nếu default siteđược bật?
Timo

1
@Timo câu trả lời này nói như thế nào
OrangeDog

43

'gốc web công cộng mặc định' có thể được tìm thấy từ đầu ra 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

giá trị --prefix là câu trả lời cho câu hỏi. đối với mẫu ở trên gốc là / var / lib / nginx


1
Yep, tốt nhất, và đa nền tảng.
Jesse Adelman

Điều này không phải lúc nào cũng đúng "--prefix" có thể được sử dụng trên một số hệ thống nhưng không phải tất cả. Tôi đồng ý nginx -V cung cấp cho bạn rất nhiều thông tin sẽ giúp theo dõi các tệp đang ở đâu, nhưng điều này phụ thuộc vào HĐH. IE trên FreeBSD không có trong "--prefix", nhưng "/ usr / local / www" và trong một số bản phân phối linux, nó cũng có thể bị lỗi. Tốt nhất của nó để nhìn vào cấu hình.
Mikec

"--prefix" là biến được xác định theo tiêu chuẩn GNU - xem gnu.org/prep/stiterias/html_node/Directory-Variables.html .
Serge S

"--prefix" là biến được xác định theo tiêu chuẩn GNU - xem gnu.org/prep/stiterias/html_node/Directory-Variables.html . nginx tuân theo các tiêu chuẩn. Nếu bạn không xác định gốc hoặc vị trí trong tệp cấu hình (phụ thuộc vào - đường dẫn), tiền tố sẽ hiển thị vị trí 'gốc web công cộng mặc định' nằm ở đâu. Và điều đó không phụ thuộc vào HĐH, mặc dù gói được cung cấp với bản phân phối HĐH cũng có thể cung cấp cấu hình xác định lại lần lượt 'gốc web công cộng mặc định'.
Serge S

vì vậy thuật toán: tìm đường dẫn --conf trong đầu ra nginx -V . nếu vị trí / hoặc gốc không được xác định lại trong cấu hình - hãy sử dụng --prefix cho vị trí 'mặc định của trang web công cộng'.
Serge S

25

Trên Mac OS X cài đặt nginx với brew làm cho thư mục mặc định:

/usr/local/var/www

Vì thế:

root html

có nghĩa

root /usr/local/var/www/html

Không có thư mục html nên nó sẽ phải được tạo thủ công.


1
+1 để đề cập đến macOS và homebrew. Tuy nhiên, tôi thấy rằng mặc dù root html, index.html50x.htmlđược đưa trực tiếp vào /usr/local/var/www. Do đó, tôi nghi ngờ sự tồn tại của htmlthư mục. Bạn có thể giúp tôi với điều đó?
iplus26

3
"brew information nginx" Cung cấp cho docroot được liệt kê trong đầu ra. Nhưng việc chỉ định "html gốc" trong cấu hình nginx sẽ thay đổi docroot cho cấu hình nginx đó.
freegnu

1
Đối với tôi (MAC OS X El Capitan 10.11.5) và brew (1.1.5), thư mục là /usr/local/Cellar/nginx/1.10.2_1/html nơi 1.10.2_1 là phiên bản nginx.
Yogesh Yadav

2
Trên trang bia của tôi, thư mục Cellar là một liên kết tượng trưng: /usr/local/Cellar/nginx/1.12.0_1/html -> ../../../var/www/và các nginx -V chương trình: --prefix=/usr/local/Cellar/nginx/1.12.0_1vì vậy root htmlđược chuyển hướng qua liên kết đó.
Đánh dấu Edington

@ iplus26 thư mục html đã có sẵn /usr/local/Cellar/nginx/1.12.2_1/html, tôi nghĩ / usr / local / var / www chỉ là một liên kết
Kanagavelu Sugumar

21

Bạn chỉ có thể ánh xạ thư mục gốc của nginx đến vị trí của trang web của bạn:

nano /etc/nginx/sites-enabled/default

bên trong tệp mặc định , tìm kiếm gốc trong thẻ máy chủ và thay đổi thư mục mặc định của trang web của bạn, ví dụ: các trang web của tôi ở / var / www

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

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

Khi tôi đang đánh giá nginx, apache2 và lighttpd, tôi đã ánh xạ tất cả chúng vào trang web của tôi ở / var / www . Tôi thấy đây là cách tốt nhất để đánh giá hiệu quả.

Sau đó, bạn có thể bắt đầu / dừng máy chủ của sự lựa chọn của bạn và xem cái nào hoạt động tốt nhất.

ví dụ

service apache2 stop
service nginx start

Btw, nginx thực sự là rất nhanh!


19

như hầu hết người dùng ở đây đã nói, nó nằm dưới đường dẫn này:

/usr/share/nginx/html

Đây là đường dẫn mặc định, nhưng bạn có thể làm cho bạn mặc dù.

tất cả những gì bạn cần là tạo một cái trong cây gốc của máy chủ web và cung cấp cho nó một số quyền "không phải 0777" và chỉ cho một người dùng và chỉ hiển thị cho người dùng đó, nhưng cuối đường dẫn sẽ hiển thị cho mọi người kể từ cuối đường dẫn là những gì tập tin và thư mục của bạn sẽ được xem bởi công chúng.

ví dụ: bạn có thể tạo một cái như thế này:

home_web/site1/public_html/www/

Bất cứ khi nào bạn tạo một máy chủ ảo trong Nginx, bạn có thể tùy chỉnh đường dẫn gốc của riêng mình, chỉ cần thêm một cái gì đó như thế này vào khối máy chủ của bạn:

 server {
    listen  80;
        server_name  yoursite.com;

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

Đúng là bạn đúng. Tôi vừa cài đặt Nginx trên centos7 của tôi và tôi nhận thấy rằng đường dẫn mặc định là /usr/share/nginx/html/thư mục. Có một lý do để thay đổi đường dẫn đó không (vì an ninh hoặc bất kỳ lý do nào khác)? Có thể để nó trong thư mục mặc định nếu tôi là người dùng duy nhất và nếu tôi chỉ lưu trữ 1 trang web trong đó?
Neel

Đừng bận tâm câu hỏi cuối cùng của tôi. Tôi đã kết thúc việc tạo các thư mục riêng cho nó vì tôi nghĩ nó tốt hơn theo cách này chỉ cần tôi muốn thêm các vhost khác nhau vào thiết lập này trong tương lai. Cách này dễ hơn. Chúc mừng :)
Neel

11

Thư mục web mặc định cho nginx tùy thuộc vào cách bạn cài đặt nó, nhưng thông thường nó nằm ở những vị trí này:

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

10

Đối với hình ảnh Ubuntu và docker:

 /usr/share/nginx/html/

Chỉ tò mò, nói rằng tôi không biết điều đó, làm thế nào tôi tìm được vị trí phù hợp? Có rất nhiều câu trả lời khác nhau cho vấn đề này
Royi Namir

Theo như tôi nhớ, tôi đã tìm kiếm "nginx" (một cái gì đó như find / -name nginx) và tìm thấy trong thư mục này (hoặc trong thư mục con của nó) tài liệu xuất hiện trong trình duyệt của tôi.
DimiDak

9

Chạy lệnh nginx -V và tìm kiếm --prefix. Sử dụng mục nhập đó để xác định vị trí đường dẫn mặc định của bạn.


9

Kết xuất cấu hình:

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

Những gì bạn nhận được có thể khác nhau vì nó phụ thuộc vào cách bạn nginx được cấu hình / cài đặt.

Người giới thiệu:

Cập nhật: Có một số nhầm lẫn về vấn đề nếu / khi -Ttùy chọn được thêm vào nginx. Nó đã được ghi lại trong trang man của vl-homutov vào ngày 16 tháng 6 năm 2015, trở thành một phần của phiên bản v1.9.2 . Nó thậm chí còn được đề cập trong các ghi chú phát hành . Các -Ttùy chọn đã có mặt tại tất cả các nginxphiên bản từ đó, trong đó có một sẵn trên 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

Tôi không nghĩ cờ này tồn tại, bạn có thể cần cập nhật câu trả lời
lfender6445

@ ifender6445, tôi hoàn toàn bối rối trước nhận xét của bạn. Tôi có hai tham chiếu đến các dòng trong nguồn, mỗi hiển thị -Ttùy chọn. Là -Ttùy chọn bị thiếu trong cài đặt cụ thể của bạn? Bạn có thể cho thấy bất cứ điều gì để chứng minh yêu cầu của bạn?
rubicks

đúng vậy, có thể là một phiên bản khác của nginx? gist.github.com/lfender6445/ed8c5e26db64eba595ae4aaf4d15ee0d
lfender6445

tôi hiểu rồi. Có vẻ như tôi đang sử dụng một phiên bản cũ hơn của nginx, xin lỗi!
lfender6445

9

Nhìn vào tập tin cấu hình nginx để chắc chắn. Lệnh này greps cho bất cứ điều gì được cấu hình trên Máy của bạn:

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

trên máy của tôi, đó là: `root / usr / share / nginx / www;


8

Trên Mac cài đặt nginx với 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

Đối với CentOS, Ubuntu và Fedora, thư mục mặc định là /usr/share/nginx/html


Tôi muốn nginx root từ var/www/html.
Dhaduk Mitesh

7

Đối với AWS EC2 Linux, bạn sẽ tìm thấy ở đây:

/usr/share/nginx

5

Trong trường hợp của tôi, nó là trong /usr/share/nginx/html

bạn có thể thử tìm bằng cách thực hiện tìm kiếm

find / -name html

5

Nếu bạn đang dùng Ubuntu 14.04, bạn có thể tìm thấy thư mục nginx www theo đường dẫn sau:

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

Cảm ơn, ngắn gọn súc tích và chính xác. Đôi khi lời giải thích đơn giản nhất là cách tốt nhất.
WhyAyala

Tôi muốn nginx root từ var/www/html.
Dhaduk Mitesh

5

Bạn có thể tìm kiếm nó, bất kể họ đã di chuyển nó ở đâu (quản trị hệ thống đã di chuyển hoặc phiên bản mới hơn của nginx)

tìm / tên nginx


4

Nếu bạn cần tìm ra thư mục gốc công khai nginx đã được xác định tại thời điểm biên dịch, bạn chỉ cần kiểm tra tệp access.log của mình.

  1. Mở nginx.conf
  2. Tìm chỉ thị log_format
  3. Giá trị của log_format là một chuỗi mẫu được sử dụng để ghi thông tin vào tệp access.log . Bạn có thể thêm biến $ document_root vào chuỗi mẫu này để ghi vị trí gốc www mặc định vào một tệp.

Dưới đây là một ví dụ từ phần http của nginx.conf với chỉ thị log_format đã sửa đổi , $ document_root được thêm vào đầu chuỗi:

    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. Sau đó sao lưu tất cả các tệp cấu hình * .conf trong thư mục conf.d và tạo tệp cấu hình đó, test.conf với các dòng sau:

    server{
        listen 80;
        server_name localhost;
    }
    
    1. Thêm dòng sau vào tập tin / etc / hosts: 127.0.0.1 localhost

    2. Tải lại cấu hình nginx: nginx -s reload

    3. Gửi yêu cầu GET đến http: // localhost :curl http://localhost

    4. Kiểm tra chuỗi access.log cuối cùng :tail -n 1 /var/log/nginx/access.log

Đây là đầu ra mẫu của lệnh này, trong đó / etc / nginx / html là gốc tài liệu mặc định được xác định tại thời điểm biên dịch:

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

nó dường như nó hoạt động, nhưng không giải quyết cho tôi, Một kỷ lục * .knexusgroup.com là 54.235.222.119, w3.knexusgroup.com nhưng nó đã không đăng nhập cho bất kỳ tên miền <bất cứ điều gì> .knexusgroup.com. Nó hoạt động khi có định nghĩa đúng về thư mục gốc, tôi không thể tìm ra vấn đề là gì, tại sao tôi không thể tìm thấy root cho bất kỳ tên miền phụ nào không khớp với bất kỳ cấu hình ngiinx nào.
Ramratan Gupta

4

bạn có thể truy cập tập tin cấu hình nginx, bạn có thể thấy root / path. trong mặc định này của nginx apache tại/var/www/html


/var/www/htmllà root web mặc định cho apache, không phải nginx.
Ethan Hohensee

4

* trang web mặc định được phân bổ trong var / www / html * máy chủ cấu hình mặc định, v.v. / nginx / site / avaliable / 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;
    }
}

* máy chủ cấu hình mặc định vv / nginx / nginx.conf

Nội dung..

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;
#   }
#}

Nhật ký truy cập mặc định với các máy khách ip var / log / nginx / ...


3

Chỉ cần lưu ý rằng trang chỉ mục mặc định cho máy chủ nginx cũng sẽ hiển thị vị trí gốc. Từ nginx (1.4.3) trên Amazon Linux AMI, bạn nhận được những điều sau:

Đây là trang index.html mặc định được phân phối với nginx trên Amazon Linux AMI. Nó nằm trong / usr / share / nginx / html.

Bây giờ bạn nên đặt nội dung của mình vào vị trí bạn chọn và chỉnh sửa chỉ thị cấu hình gốc trong tệp cấu hình nginx /etc/nginx/nginx.conf


3

Nginx của tôi trên Ubuntu là "phiên bản nginx: nginx / 1.9.12 (Ubuntu)" và đường dẫn gốc là / var / www / html /

Thông tin Ubuntu là: Không có mô-đun LSB có sẵn. ID nhà phân phối: Ubuntu Mô tả: Ubuntu 16.04 LTS Phát hành: 16.04 Tên mã: xenial

Trên thực tế, nếu bạn vừa cài đặt nginx trên Ubuntu, thì bạn có thể truy cập "/ etc / nginx / site-Available" và kiểm tra tệp mặc định, có một cấu hình như "root / web / root / path / go / here". Và đó là những gì bạn đang tìm kiếm.


3

Bạn có thể tìm thấy nó trong / var / www / đó là thư mục mặc định cho nginx và apache nhưng bạn có thể thay đổi nó. Bước 1 vào thư mục sau / etc / nginx / sites-Available

Bước 2 chỉnh sửa tệp mặc định trong đó bạn có thể tìm thấy một khối máy chủ theo đó sẽ có dòng được đặt tên là root, đó là những gì xác định vị trí.


3

trong phiên bản Ubuntu 19.04, chúng tôi đã tìm thấy nó trên

/ usr / chia sẻ / nginx / html


2

Dành cho nginx / 1.4.6 (Ubuntu)

/etc/nginx$ cat /etc/nginx/sites-available/default | grep -i root
- root /usr/share/nginx/html;


1

Mặc định có liên quan đến prefixtùy chọn của configuretập lệnh khi nginx được biên dịch; đây là một số mẫu lạ từ 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

Sau đó, giá trị mặc định rootđược thiết lập để các htmlthư mục (theo tài liệu của rootchỉ thị ), mà sẽ xảy ra là trong phạm vi prefix, như có thể được xác nhận bằng cách nhìn vào $document_rootbiến từ một tập tin cấu hình đơn giản:

# 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

Tuy nhiên, các bản phân phối độc ác như Debian dường như sửa đổi nó khá nhiều, để giúp bạn giải trí thêm:

% 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;

Vì vậy, trong trường hợp này của Debian, bạn có thể thấy rằng root cuối cùng đã được đặt thành /usr/share/nginx/www.

Nhưng như bạn đã thấy với cấu hình máy chủ mẫu sẽ phục vụ $document_rootgiá trị của nó qua http, việc định cấu hình nginx đủ đơn giản để bạn có thể viết cấu hình của riêng mình trong một hoặc hai dòng, chỉ định yêu cầu rootđể đáp ứng nhu cầu chính xác của bạn.


Nó có root html;nghĩa là gì, ý tôi là con đường thực sự là gì?
Ramratan Gupta

1
@RamratanGupta, bạn chưa đọc câu trả lời? Các dòng đầu tiên phác thảo rằng đường dẫn có liên quan đến cài đặt tiền tố thời gian biên dịch.
vào

1

Tôi cũng gặp vấn đề này trên Digital Ocean khi chạy một trang web WordPress với nginx.

Giải pháp của tôi là làm như sau:

  1. Sửa đổi /etc/nginx/nginx.conftệp bằng cách sau:
server {
root /var/www/html;
}

Sau đó tôi đã phải sudo service nginx restart

nginx -Vlệnh cũng cho bạn biết vị trí tập tin cấu hình nginx của bạn (của tôi được chỉ vào /etc/nginx/nginx.conf)


0

Alpine Linux không có bất kỳ vị trí mặc định nào cả. Các tập tin /etc/nginx/conf.d/default.confnói:

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

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

Thay thế những dòng bằng một dòng như root /var/www/localhost/htdocsđể trỏ đến thư mục bạn muốn. Sau đó sudo service nginx restartđể khởi động lại.


1
Không đúng. Chỉ cần thử nginx:alpinehình ảnh mới nhất và nó phục vụ nội dung từ /usr/share/nginx/htmltrong hộp.
Jimbali

1
Nghe có vẻ giống như hình ảnh Docker được tạo bởi dự án nginx, tình cờ sử dụng Alpine Linux làm HĐH cơ bản. Khi bạn cài đặt Alpine Linux làm HĐH chính và thực hiện apk add nginxcài đặt thủ công nginx từ trình quản lý gói riêng của Alpine, bạn sẽ gặp tình huống được mô tả trong câu trả lời của tôi (hoặc đó là trường hợp tôi đã thử cách đây vài tháng).
Lassi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.