Linux下Nginx的安装与部署

阅读: 评论:0

2024年2月3日发(作者:)

Linux下Nginx的安装与部署

一、 Nginx概述

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。本文档中Nginx版本:nginx-1.10.2

二、 Nginx安装准备

2.1关闭防火墙

用root用户登录Liunx系统关闭防火墙,关闭防火墙的作用在于防火墙阻挡网络的端口访问,照成网络访问不正常。

#service iptables stop

#chkconfig --level 345 iptables off

关闭selinux命令:

#setenforce 0

2.2创建Nginx用户

创建nginx运行的用户和组

#groupadd nginx

#useradd -g nginx nginx

#passwd nginx

改变程序目录属主属性,赋权给nginx用户

#chown -hR nginx:nginx /home/nginx

三、 Nginx依赖包安装

2.1安装gcc

用root登录名上传Linux系统镜像文件到目录/home/nginx路径,输入命令进入到nginx用户的目录:

#cd /home/nginx

输入命令查看所有文件,确保镜像文件已上传。:

#ls –n

输入命令挂在镜像文件。注意修改镜像文件名称。

#mount -o loop /home/nginx/rhel-server-6.8-x86_

/mnt

输入命令进入到已挂载的镜像文件目录中:

#cd /mnt/Packages

输入命令查看所有软件包的.rpm安装包列表:

#ls

输入命令以下命令(软件安装顺序不能错):注意安装包名称根据实际情况修改,具体名称可以看ls命令的安装包列表(上图)。

#rpm -ivh 6.x86_

#rpm -ivh 6.x86_

#rpm -ivh 6.x86_

#rpm -ivh 6.x86_

#rpm -ivh 6.x86_

#rpm -ivh libstdc++-6.x86_

#rpm -ivh gcc-c++-6.x86_

#rpm -ivh 6.x86_

2.2安装pcre

Nginx的rewrite 模块需要 pcre 库

用root登录名将pcre库安装包上传到Linux系统的/home/nginx目录中。

输入解压命令:

#cd /home/nginx

#tar –zxvf

输入命令ls 拷贝解压后文件夹名称,再输入cd 文件夹名称进入到解压后的路径,然后利用命令进行编译并安装。

#cd pcre-8.39

#./configure

接着输入命令编译并安装pcre:

#make

#make install

2.3安装zlib

gzip 模块需要zlib 库,用nginx登录将zlib程序包上传到nginx目录中。

输入命令:

#cd /home/nginx

#tar –zxvf

输入命令进入解压后的目录并安装编译:

#cd zlib-1.2.8

#./configure

#make

#make install

2.4安装OpenSSL

将Open SSL安装包上传到nginx目录中。

输入解压命令并进入解压后目录:

#cd /home/nginx

#tar -zxvf

#cd openssl-1.0.1t

输入命令编译安装

#./config

#make

#make install

以上步骤将nginx依赖包已安装完成。

四、 Nginx安装

用nginx登录名上传Nginx安装包到linux服务器/home/nginx目录下,进入到nginx存放路径里。

#cd /home/nginx

输入解压命令解压Nginx安装包:

#tar –zxvf

输入命令,进入解压后的安装包目录中。:

#cd nginx-1.10.2

安装完所有的nginx依赖包后,可以编译并安装nginx程序,输入命令:

#./configure --prefix=/home/nginx/nginx-10.2 --with-pcre=/home/nginx/pcre-8.39 --with-zlib=/home/nginx/zlib-1.2.8 --with-openssl=/home/nginx/openssl-1.0.1t --with-http_stub_status_module --with-http_realip_module --with-http_ssl_module //一条命令不换行

接着执行命令:

#make

#make install

以上命令无报错提示,则nginx已安装完成。

五、 Nginx启动

用root登录名输入编辑命令:

#vi /home/nginx/nginx-10.2/conf/

按字母键i进行编辑 :

更改之后按键盘左上角的Esc键,并输入命令: :wq ,回车保存并退出。

输入nginx启动命令:

#/home/nginx/nginx-10.2/sbin/nginx

本机访问地localhost,显示以下网页就说明Nginx启动成功。

Nginx检测命令:

#./nginx

#nginx -t

#启动

#nginx语法检查

#关闭

#重新加载配置文件

#查找进程号

# kill -9杀掉进程

#nginx -s stop

#nginx -s reload

#ps -ef | grep nginx

#killall -9 nginx

六、 Nginx负载均衡配置

输入命令:

#vi /home/nginx/nginx-10.2/conf/

按字母键i进行编辑:

以上红色字体需要更改或者添加

user nginx; # 定义Nginx运行的用户和用户组

worker_processes 8; #启动进程, 通常设置成和cpu的数量相等; 用 cat /proc/cpuinfo查看cpu信息, cpu cores一栏显示内核数

error_log logs/; #全局错误日志

#error_log logs/ notice;

#error_log logs/ info;

pid logs/; # 进程id存储文件

events {

use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6worker_connections 204800; #单个后台worker process进程的最大并发链接数,理论以上内核,可以大大提高nginx的性能

上每台nginx服务器的最大连接数为。worker_processes*worker_connections

}

http {

#打开缓存的同时也指定了缓存最大数目,以及缓存的时间; 我们可以设置一个相对高的最大时open_file_cache max=100000 inactive=20s;

open_file_cache_valid 30s; #在open_file_cache中指定检测正确信息的间隔时间

open_file_cache_min_uses 2; #定义了open_file_cache中指令参数不活动时间期间里open_file_cache_errors on; #指定了当搜索一个文件时是否缓存错误信息,也包括再次间,这样我们可以在它们不活动超过20秒后清除掉。

#设定请求缓冲

client_header_buffer_size 1k;

large_client_header_buffers 4 4k;

autoindex on; #开启目录列表访问,合适下载服务器,默认关闭

tcp_nopush on; #防止网络阻塞

#keepalive_timeout 0;

keepalive_timeout 60; #给客户端分配keep-alive连接超时时间

tcp_nodelay on; #告诉nginx不要缓存数据,而是一段一段的发送;当需要及时发送数据gzip on; #开启gzip压缩

include ;

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"';

access_log logs/ ; #设定日志格式

sendfile on; #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为

server_tokens off; #关闭在错误页面中的nginx版本数字,这样对于安全性是有好处off,以平衡磁盘与网络I/O处理速度,降低系统的uptime

时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值

gzip_disable "MSIE [1-6].(?!.*SV1)"; #指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。

最小的文件数

给配置中添加文件。我们也包括了服务器模块,这些是在不同文件中定义的。如果你的服务器模块不在这些位置,你就得修改这一行来指定正确的位置。

#设定负载均衡的服务器列表

upstream myCluster {

#采用默认轮询算法,后端两个tomcat接口(tomcat服务器IP及端口)

#虚拟主机的配置文件

include /etc/nginx/conf.d/*.conf;

include /etc/nginx/sites-enabled/*;

}

}

server 192.168.10.1:8080 max_fails=2 fail_timeout=30s;

server 192.168.10.150:8080 max_fails=2 fail_timeout=30s;

server {

listen 80; #侦听80端口

server_name 192.168.10.120; #定义使用IP访问

#charset utf-8;

access_log logs/ ; #设定本虚拟主机的访问日志

location / {

root html;

index ;

proxy_pass myCluster; #这里的名字和上面的cluster的名字相同proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 10m;

client_body_buffer_size 128k;

proxy_connect_timeout 90;

proxy_send_timeout 90;

proxy_read_timeout 90;

proxy_buffer_size 4k;

proxy_buffers 32 4k;

proxy_busy_buffers_size 64k;

proxy_redirect off;

#静态对象web缓冲

location ~*

{

}

#动态对象转发至tomcat处理

location ~* .(jsp|login|vc|ka|do)$

{

proxy_pass myCluster; #这里的名字和上面的cluster的名字相同

proxy_pass myCluster; #这里的名字和上面的cluster的名字相同proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 10m;

client_body_buffer_size 128k;

proxy_connect_timeout 90;

.(htm|html|xml|gif|jpg|jpeg|png|bmp|ico|rar|zip|java|jar|txt|flv|swf|txt|wma|exe|css|js)$

proxy_redirect off;

}

#error_page 404 /;

# redirect server error pages to the static page /

#

error_page 500 502 503 504 /;

location = / {

root html;

}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

#location ~ .php$ {

# proxy_pass 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 ;

# 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;

#}

}

# another virtual host using mix of IP-, name-, and port-based configuration

#

#server {

# listen 8000;

# listen somename:8080;

# server_name somename alias ;

# location / {

# root html;

# index ;

# }

#}

# HTTPS server

#

#server {

# listen 443 ssl;

# server_name localhost;

# ssl_certificate ;

# ssl_certificate_key ;

# ssl_session_cache shared:SSL:1m;

# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;

# ssl_prefer_server_ciphers on;

# location / {

# root html;

# index ;

# }

#}

}

更改之后按键盘左上角的Esc键,并输入命令: :wq ,回车保存并退出。重启nginx:/home/nginx/nginx-10.2/sbin/nginx -s reload

为了查看nginx的最终效果,更改了192.168.10.1服务器上Tomcat和192.168.10.150上Tomcat的页面,再次访问地址:192.168.10.120/,并刷新几次页面。

改变程序目录属主属性,赋权给nginx用户

#

chown -hR nginx:nginx /home/nginx/nginx-10.2

用户限制更改:

更改nginx文件描述符数、进程数限制

#vi /etc/security/

按键i进行编辑,最底部增加如下内容

nginx soft nproc 65535

nginx hard nproc 65535

nginx soft nofile 65535

nginx hard nofile 65535

按Esc键之后 :wq 保存编辑

用户环境变量修改:

#vi ~/.bash_profile

按键i进行编辑,增加如下内容

export LIBPATH=$LIBPATH:/usr/local/lib

export PATH=$PATH:/home/nginx/sbin/

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

按Esc键之后 :wq 保存编辑

执行命令使环境变量生效:

#source ~/.bash_profile

切换到用户nginx更新环境变量:

#su – nginx

$vi ~/.bash_profile

按键i进行编辑,增加如下内容

export NGINX_HOME=/home/nginx

export LANG=zh_CN

export LIBPATH=$LIBPATH:/usr/local/lib

export PATH=$PATH:/home/nginx/sbin/

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

export PS1=`whoami`'@'`hostname`':${PWD}>'

按Esc键之后 :wq 保存编辑

执行命令使环境变量生效:

$source ~/.bash_profile

用root用户将nginx执行权限赋给nginx

#su - root

#cd /home/nginx/nginx-10.2/sbin

#chown root nginx

#chmod u+s nginx

七、 调度算法参考

Nginx的upstream指令用于指定proxy_pass和fastcgi_pass所使用的后端服务器,即nginx的反向代理功能,因此可以将两者结合起来使用以达到负载均衡的目的,而Nginx也支持多种调度算法:

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,则会跳过该服务器分配至下一个监控的服务器。并且它无需记录当前所有连接的状态,所以它是一种无状态调度。

2、weight

指定在轮询的基础上加上权重,weight和访问比率成正比,即用于表明后端服务器的性能好坏,若后端服务器性能较好则可将大部分请求分配给它,已实现其力所能及。

例如:

我后端服务器172.23.136.148配置:E5520*2 CPU,8G内存

后端服务器172.23.136.148配置:Xeon(TM)2.80GHz * 2,4G内存

我希望在有30个请求到达前端时,其中20个请求交给172.23.136.148处理,剩余10个请求交给172.23.136.149处理,就可做如下配置

upstream web_poll {

server 172.23.136.148 weight=10;

server 172.23.136.149 weight=5;

}

3、ip_hash

每个请求按访问ip的hash结果分配,当新的请求到达时,先将其客户端IP通过哈希算法进行哈希出一个值,在随后的请求客户端IP的哈希值只要相同,就会被分配至同一个后端服务器,该调度算法可以解决session的问题,但有时会导致分配不均即无法保证负载均衡。

例如:

upstream web_pool {

ip_hash;

server 172.23.136.148:80;

server 172.23.136.149:80;

}

4、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream web_pool {

server 172.23.136.148;

server 172.23.136.149;

fair;

}

5、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

upstream web_pool {

server squid1:3128;

server squid2:3128;

hash $request_uri;

hash_method crc32;

}

每个设备的状态设置为:

表示当前的server不参与负载,用于ip_hash中

默认为越大,负载的权重就越大。

_fails 允许请求失败的次数默认为1.设为0则表示关闭该项功能,当超过最大次数时,返回proxy_next_upstream 模块定义的错误

_timeout 在max_fails定义的失败次数后,暂停的时间。

可以将其理解为备机,其它所有的非backup机器down或者忙的时候,才会将请求分配给backup机器。所以这台机器压力会最轻。

nginx支持同时设置多组的负载均衡,用来给不用的server来使用。

Linux下Nginx的安装与部署

本文发布于:2024-02-03 10:20:00,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170692680050102.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:matlab定义公式
下一篇:nginx入门教程
标签:命令   服务器   输入   请求
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23