欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Ubuntu中Nginx虛擬主機(jī)設(shè)置的項(xiàng)目實(shí)踐

 更新時(shí)間:2025年03月16日 10:53:02   作者:The_SkyUzi  
通過配置虛擬主機(jī),可以在同一臺服務(wù)器上運(yùn)行多個(gè)獨(dú)立的網(wǎng)站,本文主要介紹了Ubuntu中Nginx虛擬主機(jī)設(shè)置的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下

簡介

Nginx 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,廣泛用于托管多個(gè)網(wǎng)站或應(yīng)用。通過配置虛擬主機(jī)(Virtual Hosts),可以在同一臺服務(wù)器上運(yùn)行多個(gè)獨(dú)立的網(wǎng)站。本文將指導(dǎo)你如何在 Nginx 中設(shè)置虛擬主機(jī)。

安裝 Nginx

確保你的服務(wù)器已經(jīng)安裝了 Nginx。如果沒有,可以使用以下命令進(jìn)行安裝:

sudo apt update
sudo apt install nginx

安裝完成后,可以通過以下命令啟動并啟用 Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

創(chuàng)建虛擬主機(jī)

1. 創(chuàng)建網(wǎng)站目錄

為每個(gè)虛擬主機(jī)創(chuàng)建一個(gè)單獨(dú)的目錄來存放網(wǎng)站文件。例如,為 example.com 創(chuàng)建目錄:

sudo mkdir -p /var/www/example.com/html
sudo chmod -R 755 /var/www/example.com

2. 創(chuàng)建默認(rèn)索引文件

在網(wǎng)站目錄中創(chuàng)建一個(gè)簡單的 index.html 文件:

echo "<html><body><h1>Welcome to example.com!</h1></body></html>" | sudo tee /var/www/example.com/html/index.html

3. 配置 Nginx

編輯或創(chuàng)建一個(gè)新的虛擬主機(jī)配置文件。通常,這些文件位于 /etc/nginx/sites-available/ 目錄下。例如,創(chuàng)建 example.com 的配置文件:

sudo nano /etc/nginx/sites-available/example.com

添加以下內(nèi)容到配置文件中:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    # 可選:啟用目錄列表
    # location / {
    #     autoindex on;
    #     try_files $uri $uri/ =404;
    # }
}

保存并關(guān)閉文件。

4. 啟用虛擬主機(jī)

創(chuàng)建一個(gè)符號鏈接,將配置文件鏈接到 /etc/nginx/sites-enabled/ 目錄,以啟用該虛擬主機(jī):

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

禁用默認(rèn)的 Nginx 配置(如果不需要):

sudo rm /etc/nginx/sites-enabled/default

配置文件結(jié)構(gòu)

Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf,而虛擬主機(jī)的配置文件通常位于 /etc/nginx/sites-available/。你可以通過創(chuàng)建符號鏈接到 /etc/nginx/sites-enabled/ 來啟用這些配置文件。

示例配置文件

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    # 訪問日志和錯誤日志
    access_log /var/log/nginx/example.com.access.log combined;
    error_log /var/log/nginx/example.com.error.log warn;
}

設(shè)置訪問日志和錯誤日志

為了更好地監(jiān)控和調(diào)試,建議為每個(gè)虛擬主機(jī)設(shè)置獨(dú)立的訪問日志和錯誤日志。你可以在 server 塊中添加以下指令:

access_log /var/log/nginx/example.com.access.log combined;
error_log /var/log/nginx/example.com.error.log warn;

這將為 example.com 創(chuàng)建獨(dú)立的日志文件,分別記錄訪問請求和錯誤信息。

處理 403 Forbidden 錯誤

如果你遇到 403 Forbidden 錯誤,可能是由于以下原因:

沒有設(shè)置 index 文件

確保網(wǎng)站目錄中存在一個(gè)默認(rèn)的索引文件(如 index.html 或 index.htm)。

在 server 塊中添加 index 指令,指定要使用的索引文件。

禁用了目錄列表

如果你希望用戶能夠訪問目錄內(nèi)容,但不想提供默認(rèn)的索引文件,可以在 location 塊中添加 autoindex on;。

文件和目錄權(quán)限問題

確保 Nginx 運(yùn)行的用戶(通常是 www-data)有權(quán)限讀取網(wǎng)站目錄及其文件。

使用以下命令設(shè)置正確的權(quán)限:

sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 755 /var/www/example.com

SELinux 或 AppArmor 設(shè)置

如果系統(tǒng)啟用了 SELinux 或 AppArmor,這些安全模塊可能會限制 Nginx 訪問文件。你可以通過以下命令查看狀態(tài):

sudo aa-status
sudo sestatus

測試和重啟 Nginx

在對配置文件進(jìn)行任何更改后,記得測試 Nginx 配置是否正確,并重新加載或重啟 Nginx 服務(wù):

sudo nginx -t
sudo systemctl reload nginx
# 或者
sudo service nginx reload

Nginx 目錄重要文件和目錄

主要目錄和文件

  • /etc/nginx/nginx.conf: Nginx 的主配置文件。
  • /etc/nginx/sites-available/: 存放虛擬主機(jī)配置文件的目錄。
  • /etc/nginx/sites-enabled/: 存放已啟用的虛擬主機(jī)配置文件的目錄。
  • /var/log/nginx/: 存放 Nginx 日志文件的目錄。
  • /var/www/: 存放網(wǎng)站文件的目錄。

圖片中的文件和目錄

根據(jù)提供的圖片,以下是重要的文件和目錄:

  • conf.d: 存放額外配置文件的目錄。
  • modules-available: 存放可用模塊的目錄。
  • modules-enabled: 存放已啟用模塊的目錄。
  • sites-available: 存放虛擬主機(jī)配置文件的目錄。
  • sites-enabled: 存放已啟用虛擬主機(jī)配置文件的目錄。

server_name 指令詳解

server_name 指令用于指定 Nginx 應(yīng)響應(yīng)哪些域名的請求。它是一個(gè)非常重要的指令,特別是在配置虛擬主機(jī)時(shí)。以下是 server_name 的詳細(xì)說明和常見用法:

語法

server_name domain.tld [domain2.tld ...];

常見用法

單個(gè)域名
如果你只有一個(gè)域名,可以直接在 server_name 后面寫上該域名:

server {
    listen 80;
    server_name example.com;

    # 其他配置...
}

多個(gè)域名
如果你有多個(gè)域名指向同一個(gè)網(wǎng)站,可以在 server_name 后面列出所有域名,用空格分隔:

server {
    listen 80;
    server_name example.com www.example.com;

    # 其他配置...
}

帶通配符的域名
如果你有一組子域名,可以使用通配符來匹配這些子域名。例如,*.example.com 可以匹配所有 example.com 的子域名:

server {
    listen 80;
    server_name *.example.com;

    # 其他配置...
}

IP 地址
你也可以使用 IP 地址作為 server_name,這在測試環(huán)境中特別有用:

server {
    listen 80;
    server_name 192.168.1.100;

    # 其他配置...
}

默認(rèn)服務(wù)器
如果你不指定 server_name 或者希望 Nginx 響應(yīng)所有未匹配到其他 server_name 的請求,可以使用下劃線 _ 作為 server_name,或者省略 server_name 并使用 default_server 參數(shù):

server {
    listen 80 default_server;
    # 或者
    server_name _;

    # 其他配置...
}

特殊情況

精確匹配
你可以使用 = 來進(jìn)行精確匹配,只有當(dāng)請求的域名完全匹配時(shí)才會生效:

server {
    listen 80;
    server_name = example.com;

    # 其他配置...
}

正則表達(dá)式
你可以使用正則表達(dá)式來匹配復(fù)雜的域名模式。正則表達(dá)式需要以 ~ 開頭:

server {
    listen 80;
    server_name ~^(www\.)?(?<domain>.+)$;

    # 其他配置...
}

在這個(gè)例子中,www.example.com 和 example.com 都會匹配,并且你可以通過 $domain 變量獲取去掉 www. 后的域名。

注意事項(xiàng)

  • DNS 解析:確保你的域名已經(jīng)正確解析到服務(wù)器的 IP 地址。你可以通過 ping 或 nslookup 命令檢查域名解析是否正確。
  • SSL/TLS 配置:如果你使用 HTTPS,還需要配置 SSL 證書和密鑰,并將 listen 指令改為 listen 443 ssl;
  • 防火墻設(shè)置:確保服務(wù)器的防火墻允許 HTTP (80) 和 HTTPS (443) 端口的流量。

示例:完整的虛擬主機(jī)配置

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    # 訪問日志和錯誤日志
    access_log /var/log/nginx/example.com.access.log combined;
    error_log /var/log/nginx/example.com.error.log warn;
}

參考資源

總結(jié)

通過以上步驟,你應(yīng)該能夠在 Nginx 中成功設(shè)置虛擬主機(jī)。server_name 指令是配置虛擬主機(jī)的關(guān)鍵部分,確保你正確設(shè)置了域名、通配符或其他匹配規(guī)則。如果有任何問題,請檢查 Nginx 的錯誤日志,尋找更多線索。希望這篇筆記能幫助你順利配置 Nginx 虛擬主機(jī)!

到此這篇關(guān)于Ubuntu中Nginx虛擬主機(jī)設(shè)置的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)Nginx虛擬主機(jī)設(shè)置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nginx線程池源碼分析

    nginx線程池源碼分析

    雖然nginx的源碼非常精致,但是不得不說開發(fā)nginx很有挑戰(zhàn)性,越想更大程度上定制自己的模塊,越需要對nginx的每個(gè)細(xì)節(jié)了解頗深。
    2015-08-08
  • Ubuntu系統(tǒng)下的Nginx服務(wù)器軟件安裝時(shí)的常見錯誤解決

    Ubuntu系統(tǒng)下的Nginx服務(wù)器軟件安裝時(shí)的常見錯誤解決

    這篇文章主要介紹了Ubuntu系統(tǒng)下的Nginx服務(wù)器軟件安裝時(shí)的常見問題解決,包括徹底卸載Nginx的方法介紹,需要的朋友可以參考下
    2016-03-03
  • Linux下安裝MongoDB的實(shí)現(xiàn)步驟

    Linux下安裝MongoDB的實(shí)現(xiàn)步驟

    這篇文章主要介紹了Linux下安裝MongoDB的實(shí)現(xiàn)步驟的相關(guān)資料,希望通過本文能幫助到大家,讓大家輕松安裝,需要的朋友可以參考下
    2017-10-10
  • 詳解Nginx HTTP負(fù)載均衡和反向代理配置

    詳解Nginx HTTP負(fù)載均衡和反向代理配置

    這篇文章主要介紹了詳解Nginx HTTP負(fù)載均衡和反向代理配置,有需要的同學(xué)可以了解一下。
    2016-11-11
  • Keepalived+Nginx+Tomcat 實(shí)現(xiàn)高可用Web集群的示例代碼

    Keepalived+Nginx+Tomcat 實(shí)現(xiàn)高可用Web集群的示例代碼

    這篇文章主要介紹了Keepalived+Nginx+Tomcat 實(shí)現(xiàn)高可用Web集群的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Nginx 流量控制/限流的具體實(shí)現(xiàn)示例

    Nginx 流量控制/限流的具體實(shí)現(xiàn)示例

    限流是一種流量控制手段,用于限制單位時(shí)間內(nèi)可以通過系統(tǒng)的請求數(shù)或連接數(shù),本文主要介紹了Nginx流量控制/限流的具體實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Nginx同時(shí)支持Http和Https的配置詳解

    Nginx同時(shí)支持Http和Https的配置詳解

    這篇文章主要介紹了Nginx同時(shí)支持Http和Https的配置詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Nginx配置文件nginx.conf詳細(xì)說明

    Nginx配置文件nginx.conf詳細(xì)說明

    本篇文章主要介紹了Nginx配置文件nginx.conf詳細(xì)說明,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • Nginx IP封禁及自動封禁IP的實(shí)現(xiàn)

    Nginx IP封禁及自動封禁IP的實(shí)現(xiàn)

    本文主要介紹了Nginx IP封禁及自動封禁IP的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 利用Nginx的map指令實(shí)現(xiàn)頁面跳轉(zhuǎn)

    利用Nginx的map指令實(shí)現(xiàn)頁面跳轉(zhuǎn)

    每位網(wǎng)站運(yùn)營人可能都會碰到一些情況,比如網(wǎng)站URL規(guī)則會進(jìn)行調(diào)整,需求的不斷變化也會導(dǎo)致一些舊的URL無法訪問,這個(gè)時(shí)候可以使用Nginx的 map指令匹配這些舊的URL,并跳轉(zhuǎn)到新的URL規(guī)則,而且這種方式是在Nginx層面進(jìn)行,不會對網(wǎng)站性能產(chǎn)生影響。下面來一起看看吧。
    2016-10-10

最新評論