1. 程式人生 > 實用技巧 >nginx安裝部署+負載均衡+動靜分離配置

nginx安裝部署+負載均衡+動靜分離配置

Linux Centos7(Mac) 安裝Docker教程

Docker(部署常見應用):Docker部署Nginx

nginx官網

-------------------------------------------------------------------

一、nginx安裝以及nginx常用命令

二、nginx配置(負載、動靜分離)

-------------------------------------------------------------------

一、nginx安裝以及nginx常用命令

1、安裝編譯工具及庫檔案

yum -y install make zlib zlib-devel gcc
-c++ libtool openssl openssl-devel

2、首先要安裝 PCRE

PCRE 作用是讓 Nginx 支援 Rewrite 功能。

1、下載 PCRE 安裝包,下載地址:http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

[root@bogonsrc]# cd /usr/local/src/
[root@bogonsrc]# wgethttp://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

2、解壓安裝包:

[root@bogonsrc]# tar zxvf pcre-8.35.tar.gz

3、進入安裝包目錄

[root@bogonsrc]# cd pcre-8.35

4、編譯安裝

[root@bogonpcre-8.35]# ./configure
[root@bogonpcre-8.35]# make&& make install

5、檢視pcre版本

[root@bogonpcre-8.35]# pcre-config --version

安裝 Nginx

1、下載 Nginx,下載地址:http://nginx.org/download/nginx-1.6.2.tar.gz

[root@bogonsrc]# cd /usr/local/src/
[root@bogonsrc]# wgethttp://nginx.org/download/nginx-1.6.2.tar.gz

2、解壓安裝包

[root@bogonsrc]# tar zxvf nginx-1.6.2.tar.gz

3、進入安裝包目錄

[root@bogonsrc]# cd nginx-1.6.2

4、編譯安裝

[root@bogonnginx-1.6.2]# ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
[root@bogonnginx-1.6.2]# make
[root@bogonnginx-1.6.2]# make install

5、檢視nginx版本

[root@bogonnginx-1.6.2]# /usr/local/webserver/nginx/sbin/nginx -v

到此,nginx安裝完成。


Nginx 配置

建立 Nginx 執行使用的使用者 www:

[root@bogonconf]# /usr/sbin/groupadd www
[root@bogonconf]# /usr/sbin/useradd -g www www

配置nginx.conf ,將/usr/local/webserver/nginx/conf/nginx.conf替換為以下內容

[root@bogonconf]# cat /usr/local/webserver/nginx/conf/nginx.conf

user www www;
worker_processes 2; #設定值和CPU核心數一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; #日誌位置和日誌級別
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
 use epoll;
 worker_connections 65535;
}
http
{
 include mime.types;
 default_type application/octet-stream;
 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
       '$status $body_bytes_sent "$http_referer" '
       '"$http_user_agent" $http_x_forwarded_for';

#charset gb2312;
  
 server_names_hash_bucket_size 128;
 client_header_buffer_size 32k;
 large_client_header_buffers 4 32k;
 client_max_body_size 8m;
  
 sendfile on;
 tcp_nopush on;
 keepalive_timeout 60;
 tcp_nodelay on;
 fastcgi_connect_timeout 300;
 fastcgi_send_timeout 300;
 fastcgi_read_timeout 300;
 fastcgi_buffer_size 64k;
 fastcgi_buffers 4 64k;
 fastcgi_busy_buffers_size 128k;
 fastcgi_temp_file_write_size 128k;
 gzip on;
 gzip_min_length 1k;
 gzip_buffers 4 16k;
 gzip_http_version 1.0;
 gzip_comp_level 2;
 gzip_types text/plain application/x-javascript text/css application/xml;
 gzip_vary on;

 #limit_zone crawler $binary_remote_addr 10m;
#下面是server虛擬主機的配置
server
 {
  listen 80;#監聽埠
  server_name localhost;#域名
  index index.html index.htm index.php;
  root /usr/local/webserver/nginx/html;#站點目錄
   location ~ .*\.(php|php5)?$
  {
   #fastcgi_pass unix:/tmp/php-cgi.sock;
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   include fastcgi.conf;
  }
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
  {
   expires 30d;
 # access_log off;
  }
  location ~ .*\.(js|css)?$
  {
   expires 15d;
 # access_log off;
  }
  access_log off;
 }

}

檢查配置檔案nginx.conf的正確性命令:

[root@bogonconf]# /usr/local/webserver/nginx/sbin/nginx -t


啟動 Nginx

Nginx 啟動命令如下:

[root@bogonconf]# /usr/local/webserver/nginx/sbin/nginx


訪問站點

從瀏覽器訪問我們配置的站點ip:


Nginx 其他命令

以下包含了 Nginx 常用的幾個命令:

/usr/local/webserver/nginx/sbin/nginx -s reload            # 重新載入配置檔案
/usr/local/webserver/nginx/sbin/nginx -s reopen            # 重啟 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop              # 停止 Nginx

二、nginx配置(負載、動靜分離)

1、輪詢(預設)
每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}

2、weight
指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

3、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決session的問題。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

4、fair(第三方)
按後端伺服器的響應時間來分配請求,響應時間短的優先分配。
upstream backserver {
server server1;
server server2;
fair;
}

5、url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為快取時比較有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}

注:一致性hash使用

ngx_http_upstream_consistent_hash 模組是⼀個負載均衡器,使⽤⼀個內部⼀致性hash演算法來選擇 合適的後端節點。 該模組可以根據配置引數採取不同的⽅式將請求均勻對映到後端機器, consistent_hash $remote_addr:可以根據客戶端ip對映 consistent_hash $request_uri:根據客戶端請求的uri對映 consistent_hash $args:根據客戶端攜帶的引數進⾏映 ngx_http_upstream_consistent_hash 模組是⼀個第三⽅模組,需要我們下載安裝後使⽤ 1)github下載nginx⼀致性hash負載均衡模組 https://github.com/replay/ngx_http_consistent_hash 2)將下載的壓縮包上傳到nginx伺服器,並解壓 3)我們已經編譯安裝過nginx,此時進⼊當時nginx的原始碼⽬錄,執⾏如下命令
./confifigure —add-module=/root/ngx_http_consistent_hash-master
make
make install
4)Nginx就可以使⽤啦,在nginx.conf⽂件中配置

來源:

https://www.runoob.com/linux/nginx-install-setup.html

https://www.iteye.com/blog/tomyz0223-1046992