Nginx是一个高性能的HTTP和反向代理服务器,特点是内存占用少,并发能力强。
在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器就是一个服务器,暴露的是代理服务器的地址,隐藏了真是服务器的IP地址和端口。
./configure
pcre-config --version
yum -y install zlib zlib-devel gcc-c++ libtool openssl openssl-devel
yum install nginx
systemctl start nginx
systemctl enable nginx
默认安装位置/usr/local/nginx,启动方式:./nginx
firewall-cmd --list-all
firewall-cmd --add-port=80/tcp permanent
firewall-cmd --reload
命令路径/usr/local/nginx/sbin,可以先配置环境变量。
./nginx -v # 查看版本号
./nginx # 启动
./nginx -s stop # 关闭
./nginx -s reload # 重新加载
配置文件路径:/usr/local/nginx/conf
第一部分 全局快
配置整体运行的指令
第二部分 events块
主要配置服务器的用户网络连接
第三部分 http块
实现效果
浏览器访问www.123.com,跳转到Linux系统的Tomcat页面
准备工作
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
...
192.168.1.100 www.123.com
server {
listen 80;
server_name 192.168.1.100;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
server {
listen 9001;
server_name 192.168.1.100;
location ~ /edu/ {
proxy_pass http://127.0.0.1:8080;
}
location ~ /vod/ {
proxy_pass http://127.0.0.1:8081;
}
}
location [ = | ~ | ~* | ^~ ] uri {
...
}
1、=:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示uri包含正则表达式,且区分大小写
3、~*:用于表示uri包含正则表达式,并且区分大小写
4、^~:用于不含正则表达式的uri前,要求Nginx服务器找到表示uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。
upstream mystream {
server 192.168.1.100:8080;
server 192.168.1.100:8081;
}
server {
server_name 192.168.1.100;
location / {
proxy_pass http://mystream;
}
}
upstream mystream {
server 192.168.1.100:8080 weight=5;
server 192.168.1.100:8081 weight=10;
}
upstream mystream {
ip_hash;
server 192.168.1.100:8080 ;
server 192.168.1.100:8081 ;
}
upstream mystream {
server 192.168.1.100:8080 ;
server 192.168.1.100:8081 ;
fair;
}
注:fair是第三方的,因此需要安装模块,否则会有如下报错
nginx: [emerg] unknown directive “fair” in /usr/local/nginx/conf/nginx.conf:35
什么是动静分离
动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面。动静分离从目前实现角度来讲大致分为两种,一种是纯粹的把静态文件独立成单独的域名,放在独立的服务器上,也是目前主力推崇的方案;另一种是动态跟静态文件混合发布,通过Nginx来分开。
通过location指定不同的后缀名称实现不同的请求转发。通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体Expires定义:是给一个资源设定一个过期时间,也就是说无需去服务器端验证,直接通过浏览器自身确认是否过期即可所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用Expires来缓存),这里设置3d,表示在这3天之内访问这个URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码200。
准备工作
server {
server_name 192.168.1.100;
location /www/ {
/data/;
}
location /images/ { # 指定uri
/data/; # 指定路径
autoindex on; # 允许目录访问
}
}