阿里雲服務器(一、nginx配置實戰)

簡介

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

雙十一了,阿里雲推出了史上最優惠的雲服務器產品(點擊這裏查看詳情),1核2G新用戶只須要99元/年,一次性買3年只須要不到300元,價格確實極大的優惠。javascript

要是老用戶的話能夠用新開一個帳號,用親戚朋友的身份證認證一下也能享受1折優惠,加入個人戰隊(點擊這裏查看詳),邀請一我的差很少能瓜分戰隊的 50元分成+50元現金紅包+25%返現 。打個比方,假如你是新用戶,你買了一個3年的雲服務器一共300塊,買事後,你成功邀請一人(下單3年的雲服務器)就可分50(戰隊紅包) + 50(現金紅包) + 300*25%(返利紅包)。至關於買服務器的錢回來了一半(折上5折),聽着是否是很誘惑人,進來了解下吧;目前戰隊排名是top15,後名次靠前的話還有更大的優惠。m.aliyun.com/act/team111…php

nginx配置

鏈接服務器

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

點擊上面連接就可參團購買,購買過程當中推薦系統選擇CentOSUbuntu系統。Ubuntu系統用戶佔用率高,因此文檔天然也多,比較適合新手;CentOS比較適合企業和商用,通常看大家公司用的都是CentOS系統的;具體2者的區別可查看這裏;小編買的是Ubuntu 16.04 64位。其餘的選項選擇默認就行,地區只要是國內的都很快。html

買好後,點擊頭像=>選擇產品服務=>雲服務器,便可看到購買過的服務器產品。基本信息,配置信息,對cpu的監控一目瞭然。買阿里雲的一個主要緣由仍是阿里雲盾安全。前端

能夠在更多裏面修改遠程鏈接密碼和重置服務器密碼,修改好後,嘗試遠程鏈接下,先輸入遠程鏈接密碼,後登錄用戶名(root)、密碼便可。java

固然,也可直接使用命令行連接 :node

sudo ssh 服務器外網ip
輸入電腦密碼,輸入服務器密碼
複製代碼

除此以外,你也可用工具連接,對於 lunix 命令不是很熟悉的小夥伴比較實用。 這裏推薦用TransmitFilezilla其餘的都同樣,用戶名輸入root,端口選擇 22 便可。python

安裝Nginx

更新ubuntu軟件源linux

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
複製代碼

安裝nginxwebpack

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

安裝其餘經常使用工具

一、安裝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
複製代碼

二、安裝webpack

npm install webpack-cli -g
npm install webpack -g
複製代碼

三、安裝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 等服務器工具,也可用工具查看

自定義錯誤頁面

# 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端口的設置,具體設置如圖。

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
複製代碼

相關文章
相關標籤/搜索