nginx
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了nginx,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5732字,纯文字阅读大概需要9分钟。
内容图文
![nginx](/upload/InfoBanner/zyjiaocheng/953/dcf2c7902c7647e78d33bfa4df70caa7.jpg)
一、概述
Nginx可以做静态服务器,可以做反向代理和负载均衡分发请求。
反向代理和正向代理,反向代理以nginx为例,当用户发送大量请求时,请求发送到nginx,nginx背后是一系列服务器servers,nginx把这些请求分发给servers,由这些servers来响应请求,在此过程中,对于servers而言,很明确知道请求是谁发出的,nginx起的只是分配请求的作用,对于用户而言,用户会以为nginx就是server(其实不是,nginx只是用来分发请求的,但对于用户,会以为nginx就是server),所以说反向代理代理的是服务器。
正向代理,以VNP访问facebook为例,用户把请求发送给VNP,VNP再把请求发送给facebook服务器,服务器响应给VNP,VNP再把内容返回给用户,这样对于facebook而言,他会以为用户就是VNP(其实不是,VNP只是代替真正的用户发送请求),所以正向代理代理的就是用户。
二、安装
1.安装相关依赖
yum install gcc-c++
yum install pcre pcre-devel
yum install zlib zlib-devel
yum install openssl openssl--devel
2.安装
cd /usr/bin #进入目录
wget http://nginx.org/download/nginx-1.8.1.tar.gz #下载安装包
tar -zxvf nginx-1.8.1.tar.gz #解压
cd nginx-1.8.1 #进入解压后的目录
./configure #生成makefile
make #编译
make instal #安装
通过whereis nginx命令,可以看到nginx安装目录为/usr/local/nginx
进入该目录下的sbin,./nginx启动Nginx。
查看80端口是否被监听:
#两种方法均可
netstat -atp | grep 80
lsof -i:80
tip:发现nginx成功启动,并且成功监听端口,但还是访问不到nginx页面,可能是防火墙的问题。
https://www.cnblogs.com/lxwphp/p/8031919.html
直接关闭防火墙:systemctl stop firewalld
3.nginx相关命令:
./nginx -t #检测配置文件是否正常
./nginx -c *.conf #指定配置文件启动nginx
./nginx -s reload #重新加载配置文件,不需要重启nginx
./nginx -s stop #直接杀死进程
./nginx -s quit #等待Nginx完成任务后退出
或者:
ps aux | grep nginx #找到nginx相关进程
kill -9 pid #杀死进程
三、配置文件
# main模块,全局配置
# 指定用户、用户组
#user nobody;
# 子进程数量,为cpu内核的整数倍
worker_processes 1;
# 错误日志配置【输出级别{debug/info/notice/warn/error}】
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
# pid指定进程id的存储文件位置
#pid logs/nginx.pid;
# event模块,nginx工作模式配置
events {
# 最大可以同时接收的连接数量
worker_connections 1024;
}
# http模块配置
http {
# 在conf目录下包含的文件
include mime.types;
default_type application/octet-stream;
# 访问记录日志,------------------------------------后面有main,是不是代表全局access日志配置
#access_log logs/access.log main;
# 建议打开
sendfile on;
# 客户连接超时时间
keepalive_timeout 65;
# 数据压缩格式为gzip
gzip on;
#服务器配置,可以配置多个server
server {
# 端口
listen 81;
# 域名或ip,多个空格区分
server_name localhost;
# 访问记录日志
access_log logs/host.access.log;
# 错误日志
error_log logs/host.error.log;
# 编码
charset utf-8;
# 路由配置,
location / {
# 根目录配置
root html;
# 无请求资源时,显示的内容
index index.html index.htm;
}
# 错误页面配置
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
-main模块:全局配置
-http模块:HTTP相关配置,包括server
-upstream模块:负载均衡配置
四、nginx功能实现
-静态服务器
把一个静态项目的文件丢到/usr/local/nginx/html下:
cp nginx.conf ./nginx_static.conf #创建静态服务器nginx配置文件
./nginx -c /usr/local/nginx/conf/nginx_static.conf #指定配置文件启动
nginx_static.conf 中的server配置:
server {
listen 81;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
error_log /var/log/nginx/localhost.error.log info;
location / {
root html;
index index_.html index_.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
可以直接访问到主页index_.html,不需要特别配置静态资源的路由。
-反向代理
反向代理当然是和负载均衡一块使用,单独拿出来说,实际意义不大,但是也有助于对反向代理概念的理解吧。
反向代理只要在location中加一个proxy_pass即可。
案例:通过nginx主机192.168.43.208:81代理服务器192.168.43.52:8080。
在服务器(windows)上开启一个tomcat,在tomcat安装目录下,打开bin/startup.bat,打开后出现闪退,查看logs/catalina.log发现错误,然后解决。
其实是想说,很多时候报错了,不用去百度,先在error_log中看看,log中记载的错误还是很清晰的,然后对症下药解决即可。
因为是nginx代理了服务器tomcat,所以要确定8080端口对外开放了。
在cmd中使用命令:netstat -na,可以查看开放的端口,或者使用telnet ip port的形式看能不能连通端口。
如果没有开放端口,要去防火墙设置入站规则,https://blog.csdn.net/a12345555555/article/details/72722161
或者直接关闭防火墙。
nginx配置文件:
server {
listen 81;
# 本地机,也就是192.168.43.208
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
error_log /var/log/nginx/localhost.error.log info;
location / {
#proxy_pass 代理的服务器
proxy_pass http://192.168.43.52:8080/;
}
}
访问地址http://192/168.43.208:81,就直接访问到192.168.43.52:8080上的tomcat了:
-负载均衡
负载均衡使用的是upstream模块,在upstream下有多个服务器,请求到达nginx后,根据一定策略将请求发送给这些服务器。
负载均衡策略:
轮询:为每台服务器配置一个权重,默认权重为1,根据权重来分发请求,权重越大,分发到的请求可能就越多。
iphash:为每一个到访的用户,根据其ip地址,确定唯一hash标识,当下一次用户再来请求资源时,还是请求到相同的服务器,这样可以一定程度上解决session数据共享问题。
思路:在一台计算机上建立两个tomcat服务器,相当于两台服务器,使用“轮询”的方式对这两台服务器负载均衡。
建立两个tomcat,一个使用8080端口,一个使用8081端口:
https://blog.csdn.net/Ivorybeach/article/details/100604346
nginx配置:
# 代理的多个服务器
# 指定轮询
upstream tomcats{
# 权重大,访问的概率高
server 192.168.43.52:8080 weight=3;
server 192.168.43.52:8081;
}
server {
listen 81;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
error_log /var/log/nginx/localhost.error.log info;
# tomcats为upstream模块名
location / {
proxy_pass http://tomcats;
}
}
访问http://192.168.43.208:81,可以看到不同端口的tomcat页面,说明负载均衡生效。多次请求之后,发现大部分请求交给8080处理。
内容总结
以上是互联网集市为您收集整理的nginx全部内容,希望文章能够帮你解决nginx所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。