阿里雲伺服器(1、nginx配置實戰)

baldwin發表於2018-11-12

簡介

先來一波福利廣告(已過期)

雙十一了,阿里雲推出了史上最優惠的雲伺服器產品(點選這裡檢視詳情),1核2G新使用者只需要99元/年,一次性買3年只需要不到300元,價格確實極大的優惠。

阿里雲伺服器(1、nginx配置實戰)

要是老使用者的話可以用新開一個賬號,用親戚朋友的身份證認證一下也能享受1折優惠,加入我的戰隊(點選這裡檢視詳),邀請一個人差不多能瓜分戰隊的 50元分紅+50元現金紅包+25%返現 。打個比方,假如你是新使用者,你買了一個3年的雲伺服器一共300塊,買過後,你成功邀請一人(下單3年的雲伺服器)就可分50(戰隊紅包) + 50(現金紅包) + 300*25%(返利紅包)。相當於買伺服器的錢回來了一半(折上5折),聽著是不是很誘惑人,進來了解下吧;目前戰隊排名是top15,後名次靠前的話還有更大的優惠。m.aliyun.com/act/team111…

阿里雲伺服器(1、nginx配置實戰)

nginx配置

連線伺服器

很多前端的小夥伴買了雲伺服器後,擔心不會配置,畢竟很多的前端還不是很會配置nginx,這裡小編詳細講解下我買的阿里雲伺服器配置的過程。

點選上面連結就可參團購買,購買過程中推薦系統選擇CentOSUbuntu系統。Ubuntu系統使用者佔用率高,所以文件自然也多,比較適合新手;CentOS比較適合企業和商用,一般看你們公司用的都是CentOS系統的;具體2者的區別可檢視這裡;小編買的是Ubuntu 16.04 64位。其他的選項選擇預設就行,地區只要是國內的都很快。

買好後,點選頭像=>選擇產品服務=>雲伺服器,即可看到購買過的伺服器產品。基本資訊,配置資訊,對cpu的監控一目瞭然。買阿里雲的一個主要原因還是阿里雲盾安全。

阿里雲伺服器(1、nginx配置實戰)

可以在更多裡面修改遠端連線密碼和重置伺服器密碼,修改好後,嘗試遠端連線下,先輸入遠端連線密碼,後登陸使用者名稱(root)、密碼即可。

當然,也可直接使用命令列連結 :

sudo ssh 伺服器外網ip
輸入電腦密碼,輸入伺服器密碼
複製程式碼

阿里雲伺服器(1、nginx配置實戰)

除此之外,你也可用工具連結,對於 lunix 命令不是很熟悉的小夥伴比較實用。 這裡推薦用TransmitFilezilla其他的都一樣,使用者名稱輸入root,埠選擇 22 即可。

安裝Nginx

更新ubuntu軟體源

sudo apt-get update
sudo apt-get install -y python-software-properties software-properties-common
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
複製程式碼

安裝nginx

sudo apt-get install nginx
# 檢查是否安裝成功
nginx -v
複製程式碼

安裝好的檔案位置:

/usr/sbin/nginx:主程式
/etc/nginx:存放配置檔案
/usr/share/nginx:存放靜態檔案
/var/log/nginx:存放日誌
複製程式碼

其實從上面的根目錄資料夾可以知道,Linux系統的配置檔案一般放在 /etc,日誌一般放在 /var/log,執行的程式一般放在 /usr/sbin 或者 /usr/bin。當然,如果要更清楚Nginx的配置項放在什麼地方,可以開啟 /etc/nginx/nginx.conf

安裝其他常用工具

1、安裝nodejs

sudo apt-get install nodejs
sudo apt install nodejs-legacy
sudo apt install npm
複製程式碼

更新npm的包映象源,方便快速下載

sudo npm config set registry https://registry.npm.taobao.org
sudo npm config list
複製程式碼

全域性安裝n管理器(用於管理nodejs版本)

sudo npm install n -g
複製程式碼

安裝最新的nodejs(stable版本)

sudo n stable
# 檢查是否安裝成功
node -v
npm -v
複製程式碼

2、安裝webpack

npm install webpack-cli -g
npm install webpack -g
複製程式碼

3、安裝git

如果系統未安裝git的話,就會非常友好的提示安裝git的命令:

apt-get install git
複製程式碼

在雲伺服器上,關於git的相關操作就不方便用圖形介面化工具了,現在命令列的優勢出來了,具體git命令請參考

遺漏的工具後續會補上

配置nginx

nginx安裝完成後,配置檔案為 /etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf

cd /etc/nginx
vim nginx.conf
cd /etc/nginx/conf.d
vim default.conf
複製程式碼

自定義nginx.conf 配置

#執行使用者,預設即是nginx,可以不進行設定
user root;
#Nginx程式,一般設定為和CPU核數一樣
worker_processes 1;
#程式pid存放位置
pid /run/nginx.pid;

events {
    worker_connections  1024; # 單個後臺程式的最大併發數
    # multi_accept on;
}

http {
    ##
    # Basic Settings
    ##
    sendfile on; #開啟高效傳輸模式
    tcp_nopush on; #減少網路報文段的數量
    tcp_nodelay on;
    keepalive_timeout 65; #保持連線的時間,也叫超時時間
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types; #副檔名與型別對映表
    default_type application/octet-stream; #預設檔案型別

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on; #開啟gzip壓縮
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf; #包含的子配置項位置和檔案
    # include /etc/nginx/sites-enabled/*;
}

#mail {
#    # See sample authentication script at:
#    # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#    # auth_http localhost/auth.php;
#    # pop3_capabilities "TOP" "USER";
#    # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#    server {
#        listen     localhost:110;
#        protocol   pop3;
#        proxy      on;
#    }
#
#    server {
#        listen     localhost:143;
#        protocol   imap;
#        proxy      on;
#    }
#}
複製程式碼

自定義default.conf 配置

server {
        listen       80;   #配置監聽埠
        server_name  localhost;  #配置域名
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;

        location / {
            #服務預設啟動目錄
            root /usr/share/nginx/html/pc;   #pc
            # nginx適配pc和app裝置
            if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
                root /usr/share/nginx/html/app;  #app
            }
            index  index.html;    #預設訪問檔案
            allow  all; #允許訪問的ip
            # deny   all;  #拒絕訪問的ip
        }

        #  redirect  error pages to the static page /404.html
        error_page  404   /static/html/404/404.html;   # 配置404頁面
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /static/html/404/500.html;   #錯誤狀態碼的顯示頁面,配置後需要重啟

        # ^~ 表示uri以某個常規字串開頭,大多情況下用來匹配url路徑,nginx不對url做編碼,因此請求為/static/20%/aa,
        # 可以被規則^~ /static/ /aa匹配到(注意是空格)。
        location ^~ /static/ {
            root /usr/share/nginx/html;
            allow  all; #允許訪問的ip
            # deny   all;  #拒絕訪問的ip
        }

        location = /50x.html {
            root /usr/share/nginx/html/pc/;   #pc
            # nginx適配pc和app裝置
            if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
                root /usr/share/nginx/html/app/;  #app
            }
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
複製程式碼

自定義預設目錄

我們服務的預設目錄放在 /usr/share/nginx/html 了下。

cd /usr/share/nginx/html
ls
複製程式碼

假如你要定義伺服器的預設訪問目錄,修改 location / 中的root即可,不過需要開通下你自定義目錄的許可權。

/root/www是自定義目錄為例

# 需要一層層分別開通許可權
chmod -R 777 /root
chmod -R 777 /root/www
複製程式碼

假如你使用的是 Transmit 等伺服器工具,也可用工具檢視

阿里雲伺服器(1、nginx配置實戰)

自定義錯誤頁面

# redirect  error pages to the static page /404.html
error_page  404   /static/html/404/404.html;   # 配置404頁面
# redirect server error pages to the static page /50x.html
error_page   500 502 503 504  /static/html/404/500.html;   #錯誤狀態碼的顯示頁面,配置後需要重啟
複製程式碼

然後在你預設或者自定義的伺服器目錄下,根據你的錯誤頁配置,新建相關的頁面即可。

Nginx訪問許可權和路徑匹配規則

在匹配規則裡面,有2個欄位可以控制這個規則下的訪問許可權

location / {
    allow  all; #允許訪問的ip
    # deny   all;  #拒絕訪問的ip
}
複製程式碼

實際情況中,訪問許可權的控制還是比較複雜的,例如,要求伺服器 static(靜態目錄)所有使用者都能訪問,且,重新定義訪問路徑,我們需要location塊來完成相關的需求匹配。

# ^~ 表示uri以某個常規字串開頭,大多情況下用來匹配url路徑,nginx不對url做編碼,因此請求為/static/20%/aa,
# 可以被規則^~ /static/ /aa匹配到(注意是空格)。
location ^~ /static/ {
root /usr/share/nginx/html;
allow  all; #允許訪問的ip
# deny   all;  #拒絕訪問的ip
}
複製程式碼

對於nginx路徑匹配規則,也需要簡單的瞭解一下

  • = 表示精確匹配
  • ^~ 表示uri以某個常規字串開頭,大多情況下用來匹配url路徑,nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。
  • ~ 正則匹配(區分大小寫)
  • ~* 正則匹配(不區分大小寫)
  • !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配 的正則
  • / 任何請求都會匹配

符號的優先順序

首先匹配 =,其次匹配^~, 其次是按檔案中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,停止匹配,按當前匹配規則處理請求。

Nginx反向代理的設定

後續補充。

Nginx適配PC或移動裝置

如上述配置:

#服務預設啟動目錄
root /usr/share/nginx/html/pc;   #pc
# nginx適配pc和app裝置
if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
root /usr/share/nginx/html/app;  #app
}
複製程式碼
#服務預設啟動目錄
root /usr/share/nginx/html/pc;   #pc
# nginx適配pc和app裝置
if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
root /usr/share/nginx/html/app;  #app
}
複製程式碼

可用app和pc訪問我的伺服器檢視效果 47.99.212.100

配置阿里雲安全組

從上面的配置檔案可以看出,nginx服務監聽的是80埠,所以記得到ECS例項一下開啟埠。步驟如下:

  • 進入阿里雲控制檯,並找到ECS例項。
  • 點選例項後邊的"更多"
  • 點選"網路和安全組" ,再點選"安全組配置"
  • 選擇"安全組列表",再點選"安全組配置",再點選"加入安全組規則"
  • 進行80埠的設定,具體設定如圖。

阿里雲伺服器(1、nginx配置實戰)

nginx 相關命令

在nginx配置的過程中,我們①先安裝nginx;安裝好後,檢查是否安裝成功;②然後開始做相關nginx配置③配置完後檢查配置是否正常④然後啟動nginx⑤後續每次改動nginx配置都需重啟nginx

啟動nginx 服務

#方法一
nginx
#方法二
systemctl start nginx.service
複製程式碼

檢視所有啟動的nginx程式

ps aux | grep nginx
複製程式碼

停止Nginx服務

#方法一
nginx  -s stop
#方法二
nginx -s quit
#方法三
killall nginx
複製程式碼

檢查nginx配置是否正常

nginx -t
複製程式碼

重啟nginx服務

sudo nginx -s reload
複製程式碼

檢視埠占用情況

netstat -tlnp
複製程式碼

nginx操作常用的一些命令

ssh連結雲伺服器

sudo ssh 伺服器外網ip
複製程式碼

新建資料夾

mkdir www
複製程式碼

移動檔案

mv node-v6.10.0-linux-x64 nodejs
複製程式碼

解壓檔案

tar -xvf node-v6.10.0-linux-x64.tar.xz
複製程式碼

檢視檔案路徑

pwd
複製程式碼

訪問檔案

cd
ls
複製程式碼

編輯檔案

vim nginx.conf
複製程式碼

阿里雲伺服器(1、nginx配置實戰)

相關文章