首页 / NGINX / Linux下Nginx相关
Linux下Nginx相关
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux下Nginx相关,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含9249字,纯文字阅读大概需要14分钟。
内容图文
![Linux下Nginx相关](/upload/InfoBanner/zyjiaocheng/956/822366269f554c19b25546c486f341a4.jpg)
Nginx
Nginx 是一款高性能的Web服务器软件.
- 具有极高的并发性能
- 利用Nginx与Tomcat组合使用, 搭建反向代理集群
Nginx 反向代理集群可以解决网站的高并发问题!
常见Web Server
开源软件:
- Nginx
- Apache
- Apache Tomcat (Java EE)
- Jetty (Java EE)
商业软件
- Microsoft IIS
- IBM Webspare (Java EE)
- Oracle Weblogic (Java EE)
等
Java EE WEB 服务器也称为 Java WEB 容器.
使用Nginx
yum 安装
安装
yum -y install nginx
启动
systemctl start nginx.service
关闭
systemctl stop nginx.service
重新启动
systemctl restart nginx.service
设置开机启动
systemctl enable nginx.service
检查
ps -A|grep nginx
测试:
http://ip地址
源码编译安装
参考文档: http://nginx.org/en/docs/configure.html
安装步骤:
-
下载源代码
wget http://nginx.org/download/nginx-1.12.2.tar.gz
-
创建nginx用户
useradd nginx
-
创建 nginx 的安装目标目录
mkdir /usr/local/nginx
-
安装编译时候需要的依赖包(可选)
yum -y install pcre-devel openssl openssl-devel
-
释放并且编译
tar -zxf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure --prefix=/usr/local/nginx --user=nginx
–with-http_ssl_module
make
make install
具体实验步骤:
cd
cp -r /usr/local/nginx/nginx-1.12.0 .
useradd nginx
cd nginx-1.12.0
./configure --prefix=/usr/local/nginx --user=ngin --with-http_ssl_module
make
make install
运行Nginx
nginx -c /usr/local/nginx/conf/nginx.conf
检查进程
ps -A|grep nginx
开启防火墙的80端口(可选操作)
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
测试, 用浏览器访问
http:/192.168.17.70
Nginx 的配置文件结构
Nginx的功能是通过配置文件实现的, 使用Nginx就是会使用Nginx的配置文件.
nginx配置文件位置:
- 编译安装版本
- /usr/local/nginx/conf/nginx.conf
- yum安装版本
- /etc/nginx/nginx.conf
Nginx配置文件结构
通用(全局)配置参数
http{
http 协议通用参数
server{
虚拟机配置参数
}
server{
虚拟机配置参数
}
}
全局通用参数
-
worker_processes
建议按照处理器数量进行设置, 4处理器设置为4
worker_processes 1;
-
每个进程的线程数量, 就是进程中线程池的大小.
events { worker_connections 1024; }
-
pid 文件用于存储 Nginx 主进程号
-
日志文件, 如果打开可以记录日志,但同时服务器的性能也会下降
http通用参数
-
ContentType 类型映射, 也就是多媒体文件类型映射.
include mime.types; default_type application/octet-stream;
使用include指令简化主配置文件.
-
keepalive 指定HTTP/1.1 协议时候的服务器端的长连接等待超时时间
keepalive_timeout 65;
-
对服务器的响应进行gzip压缩传输, 可以节省网络流量. 但是问题有两个, 一个是老旧浏览器(IE6)不支持, 第二个会占用服务器的处理器.
gzip on;
更新 Nginx配置文件实验
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.2018.5.3
vim nginx.conf //开放 http 访问日志, 开放gzip压缩
//测试配置文件
nginx -t -c /usr/local/nginx/conf/nginx.conf
//热加载配置文件: 不停止nginx服务的情况下加载配置文件
nginx -s reload
用浏览器进行测试
查看 nginx/logs/access.log 日志文件
虚拟主机
在一个Web服务器上通过服务器软件模拟多台Web 服务器, 其中每个虚拟的Web服务器称为一个虚拟主机. 虚拟主机的好处是可以充分复用同一个web服务器. 对于用户来说, 用户感觉是多个网站.
Nginx 配置文件中 每个 server{} 块对应一个虚拟主机
虚拟主机有3种:
- 基于域名的虚拟主机(最常用的虚拟主机)
- 需要为服务器指定多个域名
- 域名资源解析方便, 便于用户记忆, 用户体验好.
- 基于IP虚拟主机
- 需要为服务器指定多个IP地址
- 需要租用IP
- 很少使用这种方式
- 基于端口的虚拟主机
- 绑定到服务器的多个端口
- 默认80端口只有一个
- 使用其他端口号提供服务, 因为用户需要记忆端口, 用户的体验差
基于域名的虚拟主机工作原理
[外链图片转存失败(img-D38WysDp-1566109454789)(imgs/nginx.png)]
本地解析域名实验
cd /etc
cp hosts hosts.2018.5.3
ping t1.canglaoshi.org //不通
vim hosts 添加 10.7.11.19 t1.canglaoshi.org
添加 10.7.11.19 t2.canglaoshi.org
ping t1.canglaoshi.org //通了 结束命令 Ctrl + C
ping t2.canglaoshi.org //通了
windows 实验
用记事本编辑: C:\Windows\System32\drivers\etc\hosts
notepad hosts
添加 10.7.11.19 t1.canglaoshi.org
添加 10.7.11.19 t2.canglaoshi.org
ping t1.canglaoshi.org 通了
ping t2.canglaoshi.org 通了
搭建Nginx基于域名的虚拟主机
编辑Nginx配置文件 nginx.conf
# 请求 t1.canglaoshi.org 访问 t1文件夹 index.html文件
server{
listen 80;
server_name t1.canglaoshi.org;
location / {
root t1;
index index.html;
}
}
# 请求 t2.canglaoshi.org 访问 t2文件夹 index.html文件
server{
listen 80;
server_name t2.canglaoshi.org;
location / {
root t2;
index index.html;
}
}
在Nginx文件夹/usr/local/nginx中添加新文件夹t1,t2和文件index.html
<html>
<body>
<h1>Hello t1.canglaosho.org</h1>
</body>
</html>
测试:
http://t1.canglaoshi.org
http://t2.canglaoshi.org
Nginx反向代理集群
什么是反向代理:
[外链图片转存失败(img-lpO6whsY-1566109702761)(imgs/2.png)]
反向代理集群的优势是提高网站整体的并发处理能力.
配置使用反向代理
配置原理:
[外链图片转存失败(img-nTg351wM-1566109702762)(imgs/3.png)]
配置步骤
- 进行合理的规划: 规定每个服务器所扮演的角色.
- 配置每个Tomcat应用服务器, 并且启动测试.
- 配置Nginx服务器, 测试配置文件
- 重新启动Nginx
- 客户端配置域名解析
- 客户端浏览器访问域名, 可以看到多台Tomcat为一个域名服务
参考的nginx.conf
include tts.conf;
参考的 demo.conf
upstream toms{
server 10.7.11.218:8080;
server 10.7.11.244:8080;
server 10.7.11.43:8080;
}
server{
listen 80;
server_name demo.canglaoshi.org;
access_log logs/demo.access.log;
error_log logs/demo.error.log;
index index.jsp index.html;
location / {
proxy_pass http://toms;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
Nginx 集群的负载均衡策略
一共有四种
-
默认是轮训策略
- 可以增加权重 weight:因为服务器(Tomcat)购买的时间点不同,性能会有所不不同,所以利用权重,也就是weight10、weight20、weight20,权重越大,获得的轮训机会和请求更多。笑的请求少一些,让服务器的有硬件能源充分应用。
-增加权重的具体操作则是在nginx的conf中配置tts.conf文件进行权重配置;
- 可以增加权重 weight:因为服务器(Tomcat)购买的时间点不同,性能会有所不不同,所以利用权重,也就是weight10、weight20、weight20,权重越大,获得的轮训机会和请求更多。笑的请求少一些,让服务器的有硬件能源充分应用。
-
ip_hash ip散列,根据用户的IP地址映射到固定的服务器
-
url_hash 根据URL映射到固定的服务器:
服务器临时下线问题:
因为我们的软件会经常的升级,然后他升级的话,会将服务器依次下线升级之后,再放上去。
因为一般服务器会有多台在同时运行,所以不用担心,一台服务器down掉会有什么影响,
就这样依次的将服务器下线升级就可以达到整个服务器升级的手段。
具体操作:还是tts.config文件中在具体服务器后面加一个down,升级完成之后,再将down删除,
就可以重新上线啦,
具体代码例子:
server 10.7.11.19:8080 weight=10;
server 10.7.11.19:8080 weight=10 down ;
修改好后,重启nginx:nginx的具体路径 -t
例如一般是:/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
阿里云配置Nginx转发到Tomcat
这里就可以将80和443端口的请求转发到Tomcat的8080端口了.
-
配置Nginx
-
yum安装的nginx配置文件在 /etc/nginx/nginx.conf
-
yum安装的nginx会自动包含 /etc/nginx/conf.d/*.conf, 所以将配置文件放到这个文件夹中就可以自动包含了.
-
添加配置文件 1711.conf:
upstream tomcat{ server 127.0.0.1:8080; } server { listen 80; server_name 1711.canglaoshi.org; index index.html index.jsp; location / { proxy_pass http://tomcat; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } } server{ listen 80; server_name tom.canglaoshi.org; return 301 https://tom.canglaoshi.org; } server{ listen 443; server_name tom.canglaoshi.org; ssl on; index index.html index.jsp; ssl_certificate cert/214462831460580.pem; ssl_certificate_key cert/214462831460580.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_pass http://tomcat; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
配置了2个域名 其中 tom.canglaoshi.org 绑定了ssl证书
-
-
测试 重新启动nginx
-
在阿里云的dns解析中解析 两个域名tom.canglaoshi.org, 1711.canglaoshi.org 到服务器ip
-
测试: 用浏览器访问这两个域名.
Nginx 集群转发策略
Nginx 支持4中转发策略
-
轮询(默认)
- 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
- weight
- 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
[外链图片转存失败(img-vrEZnqFu-1566109561834)(imgs/weight.png)]
-
ip_hash
- 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
[外链图片转存失败(img-ITtZJIK1-1566109561835)(imgs/ip_hash.png)]
-
fair(第三方)
- 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
-
url_hash(第三方)
服务器临时离线: 利用down 可以实现服务器临时离线, 一般用于对服务器进行维护.
案例:
upstream toms{
ip_hash;
server 10.7.11.218:8080 weight=10;
server 10.7.11.244:8080 weight=80;
server 10.7.11.43:8080 weight=20 down;
}
内容总结
以上是互联网集市为您收集整理的Linux下Nginx相关全部内容,希望文章能够帮你解决Linux下Nginx相关所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。