手摸手配置Nginx服務

你們好!我是一個喜歡前端的~菜雞Hhtml

背景

  • Nginx前端的小寶貝、有了它咱們能夠玩不少不少東西、筆者在2019年接觸到了小寶貝、起初使用雲服務器一點一點的配置環境(真的好麻煩呀)安裝各類軟件對版本也有必定要求裝prce庫啊、裝OpenSSL啥的、踩無缺多配置坑、後面初步學習了下docker、一個字 爽歪歪 因此筆者準備輸出一篇Nginx小筆記、😁

咱們要實現什麼

  • 在服務器部署一個靜態項目、讓外網能夠訪問😊
  • 配置一個反向代理、用於解決跨域需求😊
  • 配置一個負載均衡的功能、配置權重去訪問不一樣的靜態文件😊

安裝docker

  • 查看系統要求(Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看CentOS的內核版本。)
uname -a
複製代碼
  • 刪除舊版本(沒安裝的不用)
yum remove docker  docker-common docker-selinux docker-engine
複製代碼
  • 安裝須要的軟件包(yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
複製代碼
  • 設置Docker yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
複製代碼
  • 查看全部倉庫中全部docker版本(能夠查看全部倉庫中全部docker版本,並選擇特定的版本安裝)
yum list docker-ce --showduplicates | sort -r
複製代碼
  • 安裝docker
sudo yum install docker-ce
//若是要安裝特定版本使用: sudo yum install docker-ce-18.06.1.ce
//設置爲開機啓動
systemctl enable docker
//啓動
systemctl start docker
//查看狀態
systemctl status docker
//查看 版本
docker version
複製代碼

以上就是docker的安裝步驟、下一步咱們要使用docker去安裝nginx docker文檔 前端

Nginx安裝

  • 使用docker拉取Nginx鏡像 對於鏡像我是這樣理解的、它相似一個類、裏面有Nginx各類所依賴的環境屬性、它把全部的東西都寫在類裏面、咱們只須要按它的配置項傳入相對應參數咱們就能夠獲得一個實例(Nginx服務)、咱們能夠經過這個類建立多個Nginx(咱們指容器)
docker pull nginx:latest  //拉取最新版nginx
docker images //查看鏡像
複製代碼
  • 建立宿主機與容器映射的配置文件 這樣作的目的在於、我能夠直接修改宿主機的配置文件而後重啓Nginx容器就能夠了、不用進入容器去修改配置文件、直接複製下方建立文件夾指令
cd /root  
mkdir nginx
cd nginx
mkdir conf
mkdir logs
mkdir ssl
mkdir web 
cd conf
touch nginx.conf
mkdir conf.d
cd conf.d
touch default.conf
複製代碼

如今咱們建立了須要掛載映射的配置文件、可是文件內都是空的、因此咱們要複製一些基礎的配置選項進去 nginx.configlinux

#運行nginx的用戶
user  nginx;
#啓動進程設置成和CPU數量相等
worker_processes  1;

#全局錯誤日誌及PID文件的位置
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

#工做模式及鏈接數上限
events {
        #單個後臺work進程最大併發數設置爲1024
    worker_connections  1024;
}

http {
    #設定mime類型
    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壓縮
    #gzip  on;
    include /etc/nginx/conf.d/*.conf; } 複製代碼

default.confnginx

server {
     listen    80;       #偵聽80端口,若是強制全部的訪問都必須是HTTPs的,這行須要註銷掉
     server_name  localhost;             #域名或IP
     # 定義首頁索引目錄和名稱
     location / {
        root   /web/;
        index  index.html index.htm;
     }
     #重定向錯誤頁面到 /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
複製代碼

注意:server_name換成你本身的IP或者域名哦 好了、準備工做都作好了、如今咱們就須要去建立一個Nginx容器了 web

  • 使用指令建立容器、文件掛載映射 、建立 Nginx 容器
docker run --detach \
   --name demo-nginx --restart=always --privileged=true \
   -p 80:80 \
   -v /root/nginx/web:/web:rw\
    -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf/:rw\
   -v /root/nginx/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf:rw\
   -v /root/nginx/logs:/var/log/nginx/:rw\
   -v /root/nginx/ssl:/ssl/:rw\
   -d nginx
複製代碼

這裏主要作了端口的映射、和文件的掛載功能docker

Nginx驗收

靜態文件代理centos

  • 查看是否容器建立成功
docker ps //查看運行的容器、看是否有你run的容器、看name是不是 demo-nginx
複製代碼
  • 建立顯示的靜態文件
cd /root/nginx/web
touch index.html 
vi index.html
//而後在裏面隨便寫一些內容在進行保存
:wq //保存
//重啓docker容器
docker restart + 容器ID
複製代碼
  • 而後出去訪問本身的IP就能看到你剛剛在index.html的內容啦

image.png

反向代理跨域

upstream serves { 
    server 192.168.10.121:8889;
}
server {
    ....
    location  ~*^.+$ {         
        proxy_pass  http://serves; #請求轉向serves 定義的服務器列表 
    }
}
複製代碼

負載均衡服務器

upstream serves { 
    server 127.0.0.1:7878 weight=1; //weight配置權重 跟據配置的權重的大小而分發給不一樣服務器不一樣數量的請求。若是不設置,則默認爲1。下面服務器的請求順序爲:ABBABBABBABBABB.
    server 192.168.10.121:666 weight=2;
}
server {
    ....
    location  ~*^.+$ {         
        proxy_pass  http://serves; #請求轉向serves 定義的服務器列表 
    }
}

複製代碼

熱備\當某個服務器掛了、另一個備用服務器將接管服務markdown

upstream serves { 
    server 127.0.0.1:7878; 
    server 192.168.10.121:6666 backup;  #熱備     
}
複製代碼

以上就是Nginx我在項目中所使用到的點、後期若是還有別的我會繼續在上面進行補充

本文正在參與「掘金 2021 春招闖關活動」, 活動詳情

相關文章
相關標籤/搜索