2017-03-07 49 views
2

我有一些slate文檔作爲網站,並希望通過子域在內部服務器上爲他們提供服務,如下所示:internal-docs.mysite.com。爲了記錄,訪問mysite.com顯示「nginx正在運行」頁面。通過nginx中的子域服務靜態內容

我創建一個配置文件有以下路徑和名稱:/etc/nginx/sites-available/internal-docs.mysite.com

server { 
    listen 80; 
    server_name internal-docs.mysite.com; 

    root /var/www/docs-internal; 
    index index.html; 

    location/{ 
     # First attempt to serve request as file, then 
     # as directory, then fall back to displaying a 404. 
     try_files $uri $uri/ =404; 
    } 

    error_page 404 /404.html; 
} 

和當然,我已經把文件/var/www/docs-internal。然後我在/etc/nginx/sites-enabled目錄做了一個符號鏈接到uppershown配置文件:

internal-docs.mysite.com -> ../sites-available/internal-docs.mysite.com 

然後我重裝nginx -s reload但「這個網站不能達到」錯誤是什麼我得到訪問URL時。

的設置和配置看起來是正確的,我(根據我遵循的準則),所以這就是爲什麼我在一個死衚衕,有點...

+0

這似乎不是一個Nginx問題。您的子域是否正確指向服務器(嘗試nslookup或ping您的子域)? –

+0

@GabrielHautclocq,你是說我設置的配置聽起來正確嗎?我只是想知道如何解決這個問題。 – Milkncookiez

+0

另外,您應該檢查Nginx是否具有對您的配置文件的讀取訪問權限,並且您的conf會在啓用站點的目錄中加載.conf文件。 –

回答

3

看來你忘了聽指令。請嘗試以下操作:

server { 
    listen 80; 
    server_name internal-docs.mysite.com; 

    root /var/www/docs-internal; 
    index index.html; 

    location/{ 
     # First attempt to serve request as file, then 
     # as directory, then fall back to displaying a 404. 
     try_files $uri $uri/ =404; 
    } 

    error_page 404 /404.html; 
} 

如果還是不行,請檢查:

  1. 這Nginx的用戶具有讀取權限的網站內容。例如,如果你的Nginx用戶www和你有root權限,請執行以下操作:

    # su www 
    $ cat /var/www/docs-internal/index.html 
    

    如果失敗,確保位置正確擁有所有權和權限。請注意,爲了使用戶能夠瀏覽目錄,該目錄必須具有該用戶或用戶組的執行位。

  2. Nginx用戶對文件../sites-available/internal-docs.mysite.com有讀取權限。例如,如果你的Nginx用戶www和你有root權限,請執行下列操作:

    # su www 
    $ cat /etc/nginx/sites-available/internal-docs.mysite.com 
    

    如果失敗,確保配置文件有正確的所有權。注意:通常Nginx主進程是由root運行的,並且該進程會產生子進程作爲Nginx用戶運行,因此配置文件的權限不太可能成爲問題。

  3. ,也許你的配置文件名應以「.conf文件」(我的服務器上我有以下行結束:包括conf.d/* CONF;所以它會加載任何的conf文件結束。 with「.com」

  4. Nginx嘗試在其主配置文件中加載../sites-available/中的文件,也許它不會在conf.d目錄中找到(默認值)

  5. 你可以在子域上執行ping和nslookup,如果你不能,那麼你必須先修復(DNS,防火牆...)。

0

爲他人着想 - 我寫的配置是正確的,我的問題是兩件事情:

  1. 我不得不刪除listen 80指令,因爲還有另外一個配置文件已,指定nginx應在端口80上偵聽。不應該告訴nginx兩次偵聽相同的端口,即使它位於兩個單獨的配置文件中。
  2. /var/www/docs-internal文件夾上的權限。打開文件夾需要x(執行)權限,而打開文件需要r(讀取)權限。我必須爲這個層次結構中的所有文件夾提供相應的權限,以便內容可以在全局(來自所有人)打開,這基本上是從瀏覽器訪問它的。