02_物件和物件封裝
引言
為什麼要學習Nginx
問題一: 客戶端到底要將請求傳送給哪臺伺服器?
問題二: 如果所有客戶端的請求都發送給了伺服器1,那另一臺豈不是廢了
問題三: 客戶端傳送的請求可能是申請動態資源的,也可能是申請靜態資源的
在搭建集群后使用Nginx做反向代理伺服器
Nginx介紹
Nginx是由俄羅斯研發的,應對Ramble的網站,並且2004年釋出第一個版本
Nginx的特點:
穩定性機槍,7*24小時不間斷執行
Nginx提供了非常豐富的配置例項
佔用記憶體小,併發能力強
Nginx的安裝
使用docker-compose.yml安裝Nginx
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- 81:80
在/opt/資料夾下建立一個docker_nginx資料夾
mkdir docker_nginx
在此資料夾下建立一個檔名為docker-compose.yml的檔案將上面的複製進去,儲存退出,在當前資料夾執行
docker-compose up -d
測試是否安裝成功
這時使用瀏覽器訪問ip地址:81顯示如下即安裝成功
Nginx的配置檔案
位置: /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
以上同城全域性模組,
worker_processes他的數值越大,Nginx的併發能力就越強
error_log為錯誤日誌
events {
worker_connections 1024;
}
events塊
worker_connections他的數值越大,Nginx開發能力越強,上面這倆一般別動,專門的運維人員會操作
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;
}
http塊
incloude代表引入一個外部的檔案 -> /mine.types中放著大量的媒體型別
最下面的incloude ->引入了conf.d目錄下的以.conf為結尾的配置檔案,這個才是我們該關注的
如下,刪除了#註釋的內容,精簡了一下
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
127.0.0.1:9000
/scripts$fastcgi_script_name;
#server塊
listen: 代表Nginx堅挺的埠號
localhost : 代表Nginx接收請求的ip
location塊
root:將接收到的請求根據/usr/share/nginx/html去查詢靜態資源
index: 預設去上述的路徑中找到index.html或者index.html
}
修改docker-compose檔案
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- 81:80
volumes:
- /opt/docker_nginx/conf.d/:/etc/nginx/conf.d
首先退出剛才的容器
ctrl+c或者exit
關閉容器docker-compose down
編輯docker-compose.yml:vi docker-compose.yml
加上最後兩行
再重新構建:docker-compose build
重新啟動:docker-compose up -d
然後就會發現當前目錄下會多一個conf.d的目錄但是裡面啥也沒有
這時候剛才的網頁就進不去了,因為沒有server塊,所以進行手動編輯一下
vi default.conf
將以下程式碼複製進去,這裡不是yml檔案所以格式麼有什麼要求分號結尾就行
server{
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
重啟一下:
回到yml檔案所在目錄dicker-compose restart
重啟之後再次重新整理瀏覽器,你又成功了!!!!