首先安裝必要的庫(nginx 中gzip模塊需要 zlib 庫,rewrite模塊需要 pcre 庫恩脂,ssl 功能需要openssl庫)
(配置ssl證書出錯)https://blog.csdn.net/weixin_38111957/article/details/81283121
安裝make:
yum -y install gcc automake autoconf libtool make
安裝g++:
yum install gcc gcc-c++
安裝PCRE庫:
cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
tar -zxvf pcre-8.39.tar.gz
cd pcre-8.39
./configure
make && make install
安裝zlib庫:
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install
安裝openssl(某些vps默認沒裝ssl):
查看是否安裝openssl:
openssl version
如果已安裝就跳過
wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz
./configure
make && make install
安裝nginx:
wget http://nginx.org/download/nginx-1.15.9.tar.gz
./configure
make && make install
配置
在/etc/init.d/目錄下,創(chuàng)建nginx啟動腳本,并寫入內(nèi)容:
#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start() {
echo -n $"Starting $prog: "
mkdir -p /dev/shm/nginx_temp
daemon $NGINX_SBIN -c $NGINX_CONF
RETVAL=$?
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -TERM
rm -rf /dev/shm/nginx_temp
RETVAL=$?
echo
return $RETVAL
}
reload() {
echo -n $"Reloading $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -HUP
RETVAL=$?
echo
return $RETVAL
}
restart() {
stop
start
}
configtest() {
$NGINX_SBIN -c $NGINX_CONF -t
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0 {start|stop|reload|restart|configtest}"
RETVAL=1
esac
exit $RETVAL
給nginx(啟動腳本) 設定755權限:
chmod 755 /etc/init.d/nginx
添加 nginx服務 到服務列表:
chkconfig --add nginx
設定 nginx服務 開機啟動:
chkconfig nginx on
修改配置文件:
vim /usr/local/nginx/conf/nginx.conf
再http{}里面的最下面添加
include /usr/local/nginx/vhost/*.conf;
檢測nginx配置文件是否有錯
/usr/local/nginx/sbin/nginx -t
啟動nginx服務
/etc/init.d/nginx start
在vhost里面添加admin.conf和www.conf
erver {
listen 80;
server_name admin.alipayjf.com;
root /data/www/admin;
location / {
try_files $uri $uri/ /index.html;
}
}
erver {
listen 80;
server_name www.alipayjf.com;
location / {
proxy_pass http://127.0.0.1:8688;
}
location /html {
alias /data/www/html/;
}
}
配置說明
Nginx配置文件常見結(jié)構的從外到內(nèi)依次是「http」「server」「location」等等,缺省的繼承關系是從外到內(nèi)捣郊,也就是說內(nèi)層塊會自動獲取外層塊的值作為缺省值。
Server
接收請求的服務器需要將不同的請求按規(guī)則轉(zhuǎn)發(fā)到不同的后端服務器上,在 nginx 中我們可以通過構建虛擬主機(server)的概念來將這些不同的服務配置隔離去扣。
server {
listen 80;
server_name localhost;
root html;
index index.html index.htm;
}
這里的 listen 指監(jiān)聽端口孙咪,server_name 用來指定IP或域名,多個域名對應統(tǒng)一規(guī)則可以空格分開夺刑,index 用于設定訪問的默認首頁地址缅疟,root 指令用于指定虛擬主機的網(wǎng)頁跟目錄,這個地方可以是相對地址也可以是絕對地址遍愿。
Localtion
每個 url 請求都會對應的一個服務存淫,nginx 進行處理轉(zhuǎn)發(fā)或者是本地的一個文件路徑,或者是其他服務器的一個服務路徑沼填。而這個路徑的匹配是通過 location 來進行的桅咆。我們可以將 server 當做對應一個域名進行的配置,而 location 是在一個域名下對更精細的路徑進行配置倾哺。
以上面的例子轧邪,可以將root和index指令放到一個location中,那么只有在匹配到這個location時才會訪問root后的內(nèi)容:
location / {
root /data/www/host2;
index index.html index.htm;
}
靜態(tài)文件映射
訪問文件的配置主要有 root 和 aliasp's 兩個指令羞海。這兩個指令的區(qū)別容易弄混:
alias后跟的指定目錄是準確的忌愚,并且末尾必須加 /。
location /c/ {
alias /a/;
}
如果訪問站點http://location/c訪問的就是/a/目錄下的站點信息却邓。
root后跟的指定目錄是上級目錄硕糊,并且該上級目錄下要含有和location后指定名稱的同名目錄才行。
location /c/ {
root /a/;
}
這時訪問站點http://location/c訪問的就是/a/c目錄下的站點信息腊徙。
如果你需要將這個目錄展開简十,在這個location的末尾加上「autoindex on; 」就可以了
轉(zhuǎn)發(fā)
配置起來很簡單比如我要將所有的請求到轉(zhuǎn)移到真正提供服務的一臺機器的 8001 端口,只要這樣:
location / {
proxy_pass 172.16.1.1:8001;
}
這樣訪問host時撬腾,就都被轉(zhuǎn)發(fā)到 172.16.1.1的8001端口去了螟蝙。
負載均衡
upstream myserver; {
ip_hash;
server 172.16.1.1:8001;
server 172.16.1.2:8002;
server 172.16.1.3;
server 172.16.1.4;
}
location / {
proxy_pass http://myserver;
}
我們在 upstream 中指定了一組機器,并將這個組命名為 myserver民傻,這樣在 proxypass 中只要將請求轉(zhuǎn)移到 myserver 這個 upstream 中我們就實現(xiàn)了在四臺機器的反向代理加負載均衡胰默。其中的 ip_hash 指明了我們均衡的方式是按照用戶的 ip 地址進行分配场斑。另外還有輪詢、指定權重輪詢牵署、fair漏隐、url_hash幾種調(diào)度算法