基於nginx部署網站
為什麼配置虛擬主機
單虛擬主機
只需要在http{}區域中,設定一個 server{}標籤即可
部署一個 huoying.linux0224.cc 看到 /www/huoying/index.html
配置檔案如下
降低執行許可權
[root@web-8 ~]#groupadd www -g 666
[root@web-8 ~]#
[root@web-8 ~]#useradd www -u 666 -g 666 -M -s /sbin/nologin
[root@web-8 ~]#
[root@web-8 ~]#
[root@web-8 ~]#id www
uid=666(www) gid=666(www) groups=666(www)
nginx.conf入口配置檔案
user www; # 設定執行使用者
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$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;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf; # include匯入該目錄下的*.conf配置檔案
}
建立虛擬主機子配置檔案
只需要寫server{}標籤即可
# huoying.linux0224.cc
# 吧資料放在 /www/huoying/index.html
vim /etc/nginx/conf.d/huoying.linux0224.conf
# 寫入如下資訊
server {
listen 80;
# nginx會匹配 http://huoying.linux0224.cc:80
server_name huoying.linux0224.cc;
# 支援中文的引數
charset utf-8;
location / {
# 根據root引數,填寫網頁根目錄資訊
# 表示當你訪問 http://huoying.linux0224.cc:80 ,自動來這個目錄下找資料
root /www/huoying/;
# 預設找 /www/huoying/ 的名字叫做index.html的檔案
index index.html;
}
}
# 建立網頁靜態檔案,index.html 鳴人.jpg 鳴人與佐助的秘密.txt
# 你部署一個靜態網站,最基本的提供,html,jpg,txt等靜態資料
# nginx都可以幫你去返回,解析請求
#
mkdir -p /www/huoying
cat > /www/huoying/index.html <<EOF
<meta charset=utf-8>
我是火影頁面,老六你好。
EOF
cd /www/huoying ; wget -O 鳴人.jpg https://pics0.baidu.com/feed/d62a6059252dd42a57f830e3671230b2c8eab8b1.jpeg?token=df950341a2fc3467a01012e87e868f08
cd /www/huoying ; echo '佐助其實打不過鳴人' > 鳴人與佐助的秘密.txt
# 修改靜態檔案的屬主,屬組
[root@web-8 /www/huoying]#chown -R www.www /www/
測試nginx配置檔案語法,然後啟動
[root@web-8 /www/huoying]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web-8 /www/huoying]#systemctl restart nginx
根據域名訪問該虛擬主機
你的本地新增好dns域名解析
分別新增二級域名,三級域名,hosts解析
10.0.0.8 huoying.linux0224.cc linux0224.cc
你可以先訪問ip試試,通不通
[C:\~]$ ping huoying.linux0224.cc
正在 Ping huoying.linux0224.cc [10.0.0.8] 具有 32 位元組的資料:
來自 10.0.0.8 的回覆: 位元組=32 時間<1ms TTL=64
來自 10.0.0.8 的回覆: 位元組=32 時間<1ms TTL=64
html檔案資源
圖片資源
普通txt檔案資源
nginx識別的檔案型別都在這個檔案裡定義好了
[root@web-8 /www/huoying]#cat /etc/nginx/mime.types
只有這個檔案中定義的檔案型別,nginx預設可以識別處理。。
nginx的配置檔案匹配
規整,刪除無用的配置檔案
[root@web-7 /etc/nginx/conf.d]#rm -rf default.conf
IP多虛擬主機
給指定的網路卡,繫結多個ip地址
# 這個命令是臨時新增一個ip
ip addr add 10.0.0.88/24 dev eth0
不得有人在用
修改虛擬主機,繫結多個ip
vim /etc/nginx/conf.d/88.conf
# 指定繫結ip地址的配置檔案
[root@web-8 /etc/nginx/conf.d]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web-8 /etc/nginx/conf.d]#
[root@web-8 /etc/nginx/conf.d]#
[root@web-8 /etc/nginx/conf.d]#
[root@web-8 /etc/nginx/conf.d]#ls
88.conf huoying.linux0224.conf
[root@web-8 /etc/nginx/conf.d]#cat 88.conf
server {
listen 10.0.0.88:80;
server_name _;
location / {
root /www/80/;
index index.html;
}
}
# 建立測試資料
[root@web-8 /etc/nginx/conf.d]#mkdir -p /www/80/
[root@web-8 /etc/nginx/conf.d]#
[root@web-8 /etc/nginx/conf.d]#echo 'I am 10.0.0.88 server. welcome my linux' > /www/80/index.html
[root@web-8 /etc/nginx/conf.d]#
[root@web-8 /etc/nginx/conf.d]#
[root@web-8 /etc/nginx/conf.d]#systemctl restart nginx
測試基於ip的虛擬主機
1. 當你訪問 10.0.0.8 或者 huoying.linux2004.cc
看到的是/etc/nginx/conf.d/huoying.linux0224.conf這個虛擬主機的內容
2. 當你訪問,基於指定ip訪問,看到的/etc/nginx/conf.d/88.conf的內容
給這個指定的IP,繫結一個測試域名
修改本地hosts
10.0.0.88 88.linux0224.cc
訪問該域名也是可以通的,因為依然是基於繫結的socket地址匹配的該虛擬主機檔案
http://88.linux0224.cc/
多域名虛擬主機
dnf.linux0224.cc /www/lol/index.html
lol.linux0224.cc /www/lol/index.html
倆域名,就得分倆配置檔案更合適些,表示是2個站點
建立各自的配置檔案
dnf.linux0224.conf
[root@web-8 /etc/nginx/conf.d]#touch dnf.linux0224.conf
分別寫入配置 ,基於域名的虛擬主機,這樣寫
server {
listen 80;
server_name dnf.linux0224.cc; # 這裡寫的是域名
charset utf-8;
location / {
root /www/dnf/;
index index.html;
}
}
lol.linux0224.conf
server {
listen 80;
server_name lol.linux0224.cc;
charset utf-8;
location / {
root /www/lol/;
index index.html;
}
}
建立兩個資料目錄即可
mkdir -p /www/{lol,dnf}
# 分別建立測試資料
echo '人在塔在,人在linux在' > /www/lol/index.html
echo '勇士,好好學習linux,你就是最帥的' > /www/dnf/index.html
[root@web-8 /etc/nginx/conf.d]#systemctl restart nginx
重啟nginx,檢視各自的網站
還差什麼步驟嗎?
還差客戶端機器上的 域名解析
10.0.0.8 huoying.linux0224.cc linux0224.cc lol.linux0224.cc dnf.linux0224.cc
http://lol.linux0224.cc/
http://dnf.linux0224.cc/
多埠虛擬主機
除了支援
- 繫結域名
- 繫結ip
- 繫結多個埠,的虛擬主機
在一個配置檔案中,定義多個虛擬主機
vim /etc/nginx/conf.d/port.conf
# 平級
server {
listen 10.0.0.8:81;
server_name _;
charset utf-8;
location / {
root /www/data81/;
index index.html;
}
}
# 平級
server {
listen 10.0.0.8:82;
server_name _;
charset utf-8;
location / {
root /www/data82/;
index index.html;
}
}
# 建立測試資料, 看懂扣6 不懂7
mkdir -p /www/{data81,data82}
cd /www/data81 ; echo "我是81,你是老六" > /www/data81/index.html
cd /www/data82 ; echo "我是82,你是秘製小漢堡" > /www/data82/index.html
重啟服務,檢視是否生效
[root@web-8 /www/data82]#systemctl restart nginx
測試訪問81和82頁面