1. 程式人生 > >【NGINX】LINUX安裝NGINX

【NGINX】LINUX安裝NGINX

gnu module efi 小寫 span 地址 line documents 增加

  • 安裝依賴()
    • · yum install gcc
    • · yum install pcre-devel
    • · yum install zlib zlib-devel
    • · yum install openssl openssl-devel
    • · //一鍵安裝上面四個依賴
    • · yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  • 下載nginxtar
    • · //創建一個文件夾
    • · cd /usr/local
    • · mkdir nginx
    • · cd nginx
    • · //下載tar包
    • . wget http://nginx.org/download/nginx-1.13.7.tar.gz
    • .//解壓tar包
    • tar -zxvf nginx-1.13.7.tar.gz

  • 安裝nginx(如果configurexx not found 就在後面加with-xx=路徑)
    • · //進入nginx目錄
    • · cd /usr/local/nginx
    • · //執行配置命令 註意:--with-http_ssl_module 開啟SSL模塊,支持Https請求
    • · ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_stub_status_module --with-http_ssl_module --with-openssl=/home/admin/openssl/openssl-1.1.0e
    • · //執行make命令
    • · make
    • · //執行make install命令
    • · make install
  • Nginx常用命令
    • //測試配置文件
    • 安裝路徑下的/nginx/sbin/nginx -t
    • //啟動命令
    • 安裝路徑下的/nginx/sbin/nginx
    • //停止命令
    • 安裝路徑下的/nginx/sbin/nginx -s stop 或者 : nginx -s quit
    • //重啟命令
    • 安裝路徑下的/nginx/sbin/nginx -s reload      
  • //查看進程命令
  • ps -ef | grep nginx
  • //平滑重啟
  • kill -HUP Nginx主進程號
  • 配置防火墻
    • //打開防火墻文件
    • sudo vim /etc/sysconfig/iptables
    • //新增行 開放80端口
    • -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
    • //保存退
    • //重啟防火墻
    • sudo service iptables restart
  • Nginx虛擬域名配置及測試驗證
    • · //編輯nginx.conf
    • · sudo vim /usr/local/nginx/conf/nginx.conf
    • · //增加行
    • · include vhost/*.conf
      //保存退出
    • · //在/usr/local/nginx/conf目錄新建vhost文件夾
    • · mkdir vhost
      //創建每個域名的配置
      sudo vim jimisun.com.conf
      //節點中增加入響應的配置 端口轉發 或者訪問文件系統
  • Nginx啟動
    • · //進入nginx安裝目錄
    • · cd sbin
    • · sudo ./nginx
    • 測試訪問

http://ip地址

註意:nginx 安裝時候報錯:make: *** No rule to make target `build‘, needed by `default‘. Stop.

出現此種情況,是linux系統沒有安裝先決條件

1GCC——GNU編譯器集合(GCC可以使用默認包管理器的倉庫(repositories)來安裝,包管理器的選擇依賴於你使用的Linux發布版本,包管理器有不同的實現:yum是基於Red Hat的發布版本;apt用於DebianUbuntuyast用於SuSE Linux等等。)

RedHat中安裝GCC

yum install gcc

Ubuntu中安裝GCC

apt-get install gcc

2PCRE庫(Nginx編譯需要PCREPerl Compatible Regular Expression),因為NginxRewrite模塊和HTTP核心模塊會使用到PCRE正則表達式語法。這裏需要安裝兩個安裝包pcrepcre-devel。第一個安裝包提供編譯版本的庫,而第二個提供開發階段的頭文件和編譯項目的源代碼,這正是我們需要的理由。)

RedHat中安裝PCRE

yum install pcre pcre-devel

Ubuntu中安裝PCRE

apt-get install libpcre3 libpcre3-dev

3zlib庫(zlib庫提供了開發人員的壓縮算法,在Nginx的各種模塊中需要使用gzip壓縮。如同安裝PCRE一樣,同樣需要安裝庫和它的源代碼:zlibzlib-devel。)

RedHat中安裝zlib

yum install zlib zlib-devel

Ubuntu中安裝zlib

apt-get install zlib1g zlib1g-dev

4OpenSSL庫(在Nginx中,如果服務器提供安全網頁時則會用到OpenSSL庫,我們需要安裝庫文件和它的開發安裝包(opensslopenssl-devel)。)

RedHat中安裝OpenSSL

yum install openssl openssl-devel

Ubuntu中安裝OpenSSL:(註:Ubuntu14.04的倉庫中沒有發現openssl-dev):

apt-get install openssl openssl-dev

The ngx_stream_upstream_module module (1.9.0) is used to define groups of servers that can be referenced by the proxy_pass directive.

Example Configuration

upstream backend {
    hash $remote_addr consistent;
    server backend1.example.com:12345  weight=5;
    server backend2.example.com:12345;
    server unix:/tmp/backend3;
 
    server backup1.example.com:12345   backup;
    server backup2.example.com:12345   backup;
}
 
server {
    listen 12346;
    proxy_pass backend;
}

例如:nginx.conf配置詳解

http{

#虛擬主機1

server{

listen 80;

server_name www.nginx1.com;

location / {

root html;

index index.html index.htm;

}

}

#虛擬主機2

server{

listen 80;

server_name localhost;

location / {

root html;

index index.html index.htm;

}

}

}

這裏server_name配置域名的時候,如果是本地測試,需要到windos下hosts文件裏,把你的域名和ip添加進去(C:\Windows\System32\drivers\etc\hosts)

nginx支持三種類型的虛擬主機配置

  • 1、基於ip的虛擬主機, (一塊主機綁定多個ip地址)

server{

listen 192.168.1.1:80;

server_name localhost;

}

server{

listen 192.168.1.2:80;

server_name localhost;

}

    • 2、基於域名的虛擬主機(servername)

#域名可以有多個,用空格隔開

server{

listen 80;

server_name www.nginx1.com www.nginx2.com;

}

server{

listen 80;

server_name www.nginx3.com;

}

    • 3、基於端口的虛擬主機(listen不寫ip的端口模式)

server{

listen 80;

server_name localhost;

}

server{

listen 81;

server_name localhost;

}

server下的location映射解析(官方中文文檔:ngx_http_core_module)匹配規則:location [ = | ~ | ~* | ^~ ] uri { ... }

location URI {}:

對當前路徑及子路徑下的所有對象都生效;

location = URI {}:

精確匹配指定的路徑(註意URL最好為具體路徑),不包括子路徑,因此,只對當前資源生效;

location ~ URI {}:

location ~* URI {}:

模式匹配URI,此處的URI可使用正則表達式,~區分字符大小寫,~*不區 分字符大小寫;

location ^~ URI {}:

不再檢查正則表達式

優先級:= > ^~ > ~|~* > /|/dir/

舉例:

location = / {

[ configuration A ]

}

location / {

[ configuration B ]

}

location /documents/ {

[ configuration C ]

}

location ^~ /images/ {

[ configuration D ]

}

location ~* \.(gif|jpg|jpeg)$ {

[ configuration E ]

}

解答:請求“/”匹配配置A, 請求“/index.html”匹配配置B, 請求“/documents/document.html”匹配配置C, 請求“/images/1.gif”匹配配置D, 請求“/documents/1.jpg”匹配配置E

location配置規則

1、“ =”前綴的指令嚴格匹配這個查詢。如果找到,停止搜索。
2、所有剩下的常規字符串,匹配最精確的(一般最長的那個)。如果這個匹配使用^?前綴,搜索停止。
3、正則表達式,在配置文件中是從上往下匹配的
4、如果第3條規則產生匹配的話,結果被使用。否則,如同從第2條規則被使用
特殊情況:
兩種情況下,不需要繼續匹配正則 location :
( 1 ) 當普通 location 前面指定了“ ^~ ”,特別告訴 Nginx 本條普 通 location 一旦匹配上,則不需要繼續正則匹配。
( 2 ) 當普通location 恰好嚴格匹配上 ,不是最大前綴匹配,則不再繼續匹配正則

另外nginx的反向代理、Tengine(Nginx的升級版)的健康檢查 也用到了location知識,可以去看看

【NGINX】LINUX安裝NGINX