1. 程式人生 > 實用技巧 >Nginx介紹,安裝,配置

Nginx介紹,安裝,配置

引言

為什麼要學習Nginx

問題一: 客戶端到底要將請求傳送給哪臺伺服器?

問題二:如果所有客戶端的請求都發送給了伺服器1,那另一臺豈不是廢了

問題三:客戶端傳送的請求可能是申請動態資源的,也可能是申請靜態資源的

在搭建集群后使用Nginx做反向代理伺服器

Nginx介紹

Nginx是由俄羅斯研發的,應對Ramble的網站,並且2004年釋出第一個版本

Nginx的特點:

  1. 穩定性機槍,7*24小時不間斷執行
  2. Nginx提供了非常豐富的配置例項
  3. 佔用記憶體小,併發能力強

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

重啟之後再次重新整理瀏覽器,你又成功了!!!!