NGinx 기본 공개 www 위치?


302

필자는 Apache를 사용해 본 적이 있기 때문에 기본 공개 웹 루트는 일반적으로 /var/www/입니다.

최근에 nginx로 작업하기 시작했지만 기본 공개 웹 루트를 찾지 못하는 것 같습니다.

nginx의 기본 공개 웹 루트는 어디에서 찾을 수 있습니까?

답변:


166

구성에 포함되지 않은 root /some/absolute/path; 명령문이 같은 상대 경로를 사용 명령문이 포함 root some/relative/path;된 경우 결과 경로는 컴파일 시간 옵션에 따라 다릅니다.

아마도 소스를 직접 다운로드 하여 컴파일 한 경우 이것이 의미하는 바에 대해 교육적인 추측을 할 수있는 유일한 경우 일 것 입니다. 이 경우 경로 --prefix는 사용 된 것과 관련이 있습니다 . 변경하지 않은 경우 기본값은 /usr/local/nginx입니다. nginx가 via로 컴파일 된 매개 변수를 찾을 수 있습니다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
는 / usr / share /의 nginx / html로이 또한 설치가 아마존 리눅스, 디렉토리입니다,에있는 OS에 따라 달라집니다
jeffmcneill

--prefix 경로가 항상 올바른 것은 아닙니다. 내 데비안 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

apt-get을 사용하여 Ubuntu에 설치하는 경우을 시도하십시오 /usr/share/nginx/www.

편집하다:

최신 버전에서는 경로가 다음과 같이 변경되었습니다. /usr/share/nginx/html

2019 년 편집 :

시도해 볼 수도 /var/www/html/index.nginx-debian.html있습니다.


113
우분투의 nginx 1.4.1는 / usr / share에 /의 nginx / html로
닉 Desaulniers

방금 Raspberry에 nginx를 설치했습니다. 기본 디렉토리는 Lufix +1과 동일합니다. apt-get에서 다운로드 한 raspbian
Mitro

4
CentOS 7.0에서도 / usr / share / nginx / html임을 확인했습니다
djhaskin987

2
데비안 apt-get, / etc / nginx / available-sites / default를 확인하고 경로를 찾았습니다.
Chris.Zou

7
우분투 16 /var/www/html/index.nginx-debian.html
돈 밝은

65

데비안의 기본 Nginx 디렉토리는 /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로 끝나야합니다. 그렇지 않으면 파일이 선택되지 않습니다.
Ethan Hohensee

1
기본 사이트가 활성화되어 있고 요청과 일치하는 경우에만 적용됩니다. 그렇지 않으면 기본 루트는 html입니다.
OrangeDog

@OrangeDog default site활성화 되어 있는지 확인하는 방법 은 무엇입니까?
Timo


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

이것은 항상 올바른 것은 아니며 일부 시스템에서는 "-접두사"가 사용될 수 있지만 전부는 아닙니다. nginx -V가 파일의 위치를 ​​추적하는 데 도움이되는 많은 정보를 제공한다는 데 동의하지만 OS에 따라 다릅니다. FreeBSD의 IE는 "-접두사"가 아닌 "/ usr / local / www"에 있으며 일부 Linux 배포판에서도 차이가있을 수 있습니다. 구성을 보는 것이 가장 좋습니다.
Mikec

"--prefix"는 GNU 표준에 의해 정의 된 변수입니다 ( gnu.org/prep/standards/html_node/Directory-Variables.html 참조) .
Serge S

"--prefix"는 GNU 표준에 의해 정의 된 변수입니다 ( gnu.org/prep/standards/html_node/Directory-Variables.html 참조) . nginx는 표준을 따릅니다. 구성 파일에서 루트 또는 위치를 정의하지 않으면 (--conf-path에 따라 다름) 접두사에 '기본 공용 웹 루트'가있는 위치가 표시됩니다. 그리고 OS에 의존하지 않지만 OS 배포판과 함께 제공된 패키지는 '기본 공용 웹 루트'를 다시 정의하는 구성을 제공 할 수도 있습니다.
Serge S

따라서 알고리즘 : nginx -V 출력 에서 --conf-path 를 찾으십시오 . 설정에서 위치 / 또는 루트 가 다시 정의되지 않은 경우 '기본 공용 웹 루트'위치에 --prefix 를 사용하십시오 .
Serge S

25

Mac OS X에서 brew와 함께 nginx를 설치하면 기본 디렉토리가됩니다.

/usr/local/var/www

그래서:

root html

방법

root /usr/local/var/www/html

html 디렉토리가 없으므로 수동으로 작성해야합니다.


1
macOS 및 homebrew에 대해 +1 그러나, 나는 그 생각을 발견 root html, index.html그리고 50x.html직접 넣어 /usr/local/var/www. 따라서 html폴더 가 있는지 의심 됩니다. 그것에 대해 도움을 줄 수 있습니까?
iplus26

3
"brew info nginx"출력에 나열된 docroot를 제공합니다. 그러나 nginx 설정에서 "root html"을 지정하면 해당 nginx 설정의 docroot가 변경됩니다.
freegnu

1
나 (MAC OS X El Capitan 10.11.5) 및 brew (1.1.5)의 경우 디렉토리는 /usr/local/Cellar/nginx/1.10.2_1/html 1.10.2_1이 nginx 버전입니다.
Yogesh Yadav

2
: 내 양조에 지하실 디렉토리가 심볼릭 링크를 설치 /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 / 지방은 / 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/;
}

그렇습니다. 방금 centos7에 Nginx를 설치했는데 기본 경로가 /usr/share/nginx/html/폴더 라는 것을 알았습니다 . 보안이나 다른 이유로 경로를 변경해야 할 이유가 있습니까? 내가 유일한 사용자가되고 그 안에 1 개의 웹 사이트 만 호스트한다면 기본 폴더에 그대로 두는 것이 좋습니까?
Neel

마지막 질문은 신경 쓰지 마 나는 나중에이 설정에 다른 가상 호스트를 추가하고 싶을 때를 대비하여 더 나은 방법으로 생각했기 때문에 별도의 폴더를 만들었습니다. 이 방법이 더 쉽습니다. 건배 :)
Neel

11

nginx의 기본 웹 폴더는 설치 방법에 따라 다르지만 일반적으로 다음 위치에 있습니다.

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

10

우분투 및 도커 이미지의 경우 :

 /usr/share/nginx/html/

궁금한 점이 있을지 모르겠습니다. 올바른 위치가 무엇인지 어떻게 알 수 있습니까? 거기에이 밖으로에 여러 가지 답이있다
Royi Namir

내가 기억하는 한 "nginx"(find / -name nginx와 같은 것)를 검색하고이 디렉토리 (또는 그 하위 디렉토리) 내 브라우저에 나타나는 문서를 찾았습니다.
DimiDak

9

명령을 실행하고을 nginx -V 찾으십시오 --prefix. 해당 항목을 사용하여 기본 경로를 찾으십시오.


9

구성을 덤프하십시오.

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

nginx구성 / 설치 방법에 따라 달라지는 내용이 다를 수 있습니다 .

참고 문헌 :

업데이트 : -T옵션이 언제 추가 되었는지에 대한 혼란이 있습니다 nginx. 이 문서는 2015 년 6 월 16 일 vl-homutov 가 설명서 페이지에 문서화했으며 v1.9.2 릴리스의 일부가 되었습니다 . 릴리스 노트 에도 언급되어 있습니다 . 이 -T옵션은 nginxUbuntu 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옵션을 보여줍니다 . 는 IS -T특정 설치에서 누락 된 옵션은? 귀하의 주장을 뒷받침 할만한 것을 보여줄 수 있습니까?
rubicks

예, 다른 버전의 nginx 일 수 있습니까? gist.github.com/lfender6445/ed8c5e26db64eba595ae4aaf4d15ee0d
lfender6445

내가 참조. 이전 버전의 nginx, 사과를 사용하는 것 같습니다!
lfender6445

9

nginx 설정 파일을 확인하십시오. 이 명령은 시스템에 구성된 모든 항목을 표시합니다.

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

내 컴퓨터에서는 : root / usr / share / nginx / www;


8

Mac에서 brew와 함께 nginx를 설치하십시오.

/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

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 파일에 정보를 쓰는 데 사용되는 템플릿 문자열입니다 . 기본 www 루트 위치를 파일에 기록하기 위해이 문서 문자열에 $ document_root 변수를 추가 할 수 있습니다 .

다음은 수정 된 log_format 지시문 이있는 nginx.conf 의 http 섹션에있는 예제입니다. $ 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.d 디렉토리의 모든 구성 파일 * .conf를 백업 하고 다음 줄을 사용하여 test.conf 구성 파일을 작성하십시오 .

    server{
        listen 80;
        server_name localhost;
    }
    
    1. / etc / hosts 파일에 다음 행을 추가하십시오. 127.0.0.1 localhost

    2. nginx 구성을 다시로드하십시오. nginx -s reload

    3. http : // localhost로 GET 요청 보내기 :curl http://localhost

    4. access.log 의 마지막 문자열을 확인하십시오. .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 도메인에 대해서는 기록하지 않았습니다. 그것은 루트 디렉토리의 적절한 정의가있는 곳에서 작동합니다. 문제가 무엇인지 알 수 없습니다. 왜 ngiinx 구성과 일치하지 않는 하위 도메인의 루트를 찾을 수 없습니까?
Ramratan Gupta

4

당신은 파일 설정 nginx에 액세스 할 수 있습니다, 당신은 루트 / 경로를 볼 수 있습니다 이 기본값의 nginx 아파치에서/var/www/html


/var/www/htmlnginx가 아닌 아파치의 기본 웹 루트입니다.
Ethan Hohensee

4

* 기본 페이지 웹은 var / www / html에 할당 * 기본 구성 서버 etc / nginx / sites / 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;
    }
}

* 기본 설정 서버 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 서버의 기본 인덱스 페이지에도 루트 위치가 표시됩니다. Amazon Linux AMI의 nginx (1.4.3)에서 다음을 얻습니다.

Amazon Linux AMI에서 nginx와 함께 배포되는 기본 index.html 페이지입니다. / usr / share / nginx / html에 있습니다.

이제 콘텐츠를 원하는 위치에 놓고 nginx 구성 파일 /etc/nginx/nginx.conf에서 루트 구성 지시문을 편집해야합니다.


3

Ubuntu의 내 nginx는 "nginx 버전 : nginx / 1.9.12 (Ubuntu)"이고 루트 경로는 / var / www / html /

우분투 정보는 : 사용 가능한 LSB 모듈이 없습니다. 배급 자 ID : Ubuntu 설명 : Ubuntu 16.04 LTS 릴리스 : 16.04 코드 이름 : xenial

실제로 우분투에 nginx를 설치 한 경우 "/ etc / nginx / sites-available"로 이동하여 기본 파일을 확인할 수 있습니다. "root / web / root / path / goes / here"와 같은 구성이 있습니다. 그리고 그것은 당신이 찾고있는 것입니다.


3

nginx 및 apache의 기본 디렉토리 인 / var / www /에서 찾을 수 있지만 변경할 수 있습니다. 1 단계는 다음 폴더 / etc / nginx / sites-available로 이동하십시오.

2 단계 기본 파일을 편집하여 위치를 정의하는 루트로 이름이 지정된 행이있는 서버 블록을 찾을 수 있습니다.


3

우분투 19.04에서 우리는 그것을 발견했습니다.

/ usr / share / nginx / html


2

nginx / 1.4.6 (우분투)

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


1

기본값은 nginx가 컴파일 될 때 스크립트 prefix옵션 과 관련이 있습니다 configure. 다음은 데비안의 이상한 샘플입니다.

% 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

그러나 데비안과 같은 악의적 인 배포판은 약간의 즐거움을 유지하기 위해 약간 수정하는 것처럼 보입니다.

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

따라서이 데비안 인스턴스에서 루트가 최종적으로로 설정되어 있음을 알 수 /usr/share/nginx/www있습니다.

그러나 $document_roothttp를 통해 그 가치를 제공하는 샘플 서버 구성에서 알 수 있듯이 nginx 구성은 간단한 요구 사항 root을 충족 하는 데 필요한 것을 지정하여 한 줄 또는 두 줄의 문제로 자신의 구성을 작성할 수있을 정도로 간단 합니다.


그것은 무엇을 의미 root html;합니까, 나는 실제 경로가 무엇을 의미합니까?
Ramratan Gupta

1
@RamratanGupta, 답을 읽지 못했습니까? 첫 번째 줄은 경로가 컴파일 타임 접두사 설정과 관련이 있음을 나타냅니다.
cnst

1

또한 nginx와 함께 WordPress 웹 사이트를 실행하는 Digital Ocean 에서도이 문제가 발생했습니다.

내 해결책은 다음을 수행하는 것이 었습니다.

  1. /etc/nginx/nginx.conf다음을 사용 하여 파일을 수정하십시오 .
server {
root /var/www/html;
}

나는 그때했다 sudo service nginx restart

nginx -V이 명령은 또한 nginx 설정 파일의 위치를 ​​보여줍니다 (광산이 지적되었습니다 /etc/nginx/nginx.conf)


0

알파인 리눅스에는 기본 위치가 전혀 없습니다. 파일 /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즉시 사용 가능한 콘텐츠를 제공합니다 .
Magicode

1
이것은 nginx 프로젝트에서 만든 Docker 이미지처럼 들리는데 Alpine Linux를 기본 OS로 사용하고 있습니다. Alpine Linux를 기본 OS로 apk add nginx설치하고 Alpine의 자체 패키지 관리자에서 nginx를 수동으로 설치하면 내 대답에 설명 된 상황이 발생합니다 (또는 몇 달 전에 시도한 경우).
Lassi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.