【NGINX】LINUX安裝NGINX
- 安裝依賴()
- · 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
- 下載nginx的tar包
- · //創建一個文件夾
- · 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(如果configure報xx 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系統沒有安裝先決條件
1、GCC——GNU編譯器集合(GCC可以使用默認包管理器的倉庫(repositories)來安裝,包管理器的選擇依賴於你使用的Linux發布版本,包管理器有不同的實現:yum是基於Red Hat的發布版本;apt用於Debian和Ubuntu;yast用於SuSE Linux等等。)
RedHat中安裝GCC:
yum install gcc
Ubuntu中安裝GCC:
apt-get install gcc
2、PCRE庫(Nginx編譯需要PCRE(Perl Compatible Regular Expression),因為Nginx的Rewrite模塊和HTTP核心模塊會使用到PCRE正則表達式語法。這裏需要安裝兩個安裝包pcre和pcre-devel。第一個安裝包提供編譯版本的庫,而第二個提供開發階段的頭文件和編譯項目的源代碼,這正是我們需要的理由。)
RedHat中安裝PCRE:
yum install pcre pcre-devel
Ubuntu中安裝PCRE:
apt-get install libpcre3 libpcre3-dev
3、zlib庫(zlib庫提供了開發人員的壓縮算法,在Nginx的各種模塊中需要使用gzip壓縮。如同安裝PCRE一樣,同樣需要安裝庫和它的源代碼:zlib和zlib-devel。)
RedHat中安裝zlib:
yum install zlib zlib-devel
Ubuntu中安裝zlib:
apt-get install zlib1g zlib1g-dev
4、OpenSSL庫(在Nginx中,如果服務器提供安全網頁時則會用到OpenSSL庫,我們需要安裝庫文件和它的開發安裝包(openssl和openssl-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