Linux环境下安装Nginx
1 什么是Nginx
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
2 应用场景
- http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
- 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
- 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
3 nginx安装
下载nginx
点这里进入nginx官网
这里安装的版本是1.8.0
如果之前安装过,可以先删除:
3.1 要求的安装环境
- 需要安装gcc的环境。
yum install gcc-c++
- 第三方的开发包
- PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
- zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
- openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
3.2 安装步骤
- 把nginx的源码包上传到linux系统
- 解压缩
tar zxf nginx-1.8.0.tar.gz -C /usr/local
- 使用configure命令创建一makeFile文件
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注意:启动nginx之前,上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
mkdir /var/temp/nginx/client -p
mkdir /usr/local/nginx
- 编译
make
- 安装
make install
安装完成!
3.3 启动 nginx
进入sbin目录(上个图片所示目录)
启动:
./nginx
3.4 关闭 nginx
./nginx -s stop
推荐使用以下内容:
./nginx -s quit
3.5 重启 nginx
- 先关闭再启动;
- 可以使用以下内容更方便:
./nginx -s reload
3.6访问 nginx
在浏览器输入ip直接访问:
注意:关闭防火墙,或者开放端口
4 配置虚拟主机
就是在一台服务器启动多个网站。
如何区分不同的网站:
- 域名不同;
- 端口不同
4.1 通过端口区分不同虚拟机
Nginx的配置文件:
/usr/local/nginx/conf/nginx.conf
可以配置多个server,配置了多个虚拟主机。
记得每次更改了配置文件,要重载:
nginx -s reload
4.2 通过域名区分虚拟主机
暂留白;
5 反向代理
5.1 什么是反响代理
正向代理:
反向代理:
反向代理服务器决定哪台服务器提供服务,
返回代理服务器不提供服务器。也是请求的转发。
5.2 Nginx实现反向代理
发送请求先给nginx,nginx将请求转发给某个特定服务器的特定端口。
- 启动一个tomcat
- 将tomcat配置在nginx.conf即可
以下conf配置启用了两个tomcat:
注意:
upstream的名字对应server的proxy_pass路径;
upstream中的ip是实际的ip
server中的server_name是访问时输入的名字,可以是域名、ip等
upstream tomcat1 {
server 192.168.25.148:8080;
}
server {
listen 80;
server_name www.sina.com.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat1;
index index.html index.htm;
}
}
upstream tomcat2 {
server 192.168.25.148:8081;
}
server {
listen 80;
server_name www.sohu.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat2;
index index.html index.htm;
}
}
6 负载均衡
请求发送给nginx,nginx转发请求的时候,如果配置了多台服务器,默认情况下,平均分配请求数量。
1、启动多个tomcat
2、将tomcat配置在nginx.conf即可
upstream tomcat {
server 192.168.136.131:8080 weight=2;
server 192.168.136.131:8081;
}
如果一个服务由多条服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。
以下conf配置文件是,启动了两个tomcat,每个tomcat下部署相同的项目,用以提高并发量:
注意:weight=2 是权重,可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1
upstream tomcat {
server 192.168.236.129:8080 weight=2;
server 192.168.236.129:8081;
}
server {
listen 80;
server_name 192.168.236.129;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://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 index.php;
# 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;
#}
}