重庆网站seo建设,智慧营销系统平台,网站模块标准版,公司网站设计怎么做一、ngnix简介
nginx是一个高性能的HTTP服务器和方向代理的web服务器。特点是内存少#xff0c;并发能力强 #xff0c;处理并发的能力十分强大#xff0c;能够承受高负载的考验。 nginx有以下的几个基本作用#xff1a; 作为web服务器 作为静态页面的web服务器#xff0…一、ngnix简介
nginx是一个高性能的HTTP服务器和方向代理的web服务器。特点是内存少并发能力强 处理并发的能力十分强大能够承受高负载的考验。 nginx有以下的几个基本作用 作为web服务器 作为静态页面的web服务器也就是可以通过nginx部署静态页面非常方便但是不支持java也就是java只能和tomcat配合。 正向代理 局域网中的客户端需要访问internet就需要通过代理服务器来进行访问这种类似的代理方式就称为正向代理 反向代理(部署项目的时候常用) 方向代理就是客户端不需要什么配置就能访问服务(无感)。比如通过域名访问实际上是ip地址简单来说就是请求发送给反向的代理服务器代理服务器找到真实的服务器获取数据然后返还给客户端隐藏了服务器的真实地址。 负载均衡 负载均衡简单来说就是当某一个时间段有大量的请求的时候如果只让一个服务器来处理请求很有可能处理不过来服务器负载很大可能崩溃就算通过纵向策略提高服务器的配置也没从根源解决问题且现在的硬件配置也是有限的所以我们选择横向增加服务器的数量将请求分发到各个服务器上将负载分发到不痛的服务器这就是负载均衡。 动静分离 动静分离的意思就是把动态页面和静态页面交给不同的服务器来解析加快解析速度从而加快了网站的解析速度访问速度。
二、nginx常用命令和配置文件
1. 基本命令
nginx -v 查看nginx版本nginx 启动nginxsudo systemctl start nginx 使用系统管理工具systemctl启动nginxsudo systemctl stop nginx 使用系统管理工具systemctl停止nginxsudo systemctl restart nginx 使用系统管理工具systemctl重启nginxsudo systemctl reload nginx 使用系统管理工具systemctl重新加载nginxnginx -s stop 关闭nginxnginx -s reload 重新加载nginx
2. Nginx配置文件
a. 配置文件位置
/etc/nginx/nginx.conf
b. 配置文件nginx.conf的组成
第一部分全局块 如下 user www-data;// 运行web服务器的特殊账户 worker_processes auto; //允许生成的 worker process 数worker_processes 值越大可以支持的并发处理量也越多但是 会受到硬件、软件等设备的制约。 pid /run/nginx.pid; //进程 PID 存放路径 第二部分events块
events 块涉及的指令**主要影响 Nginx 服务器与用户的网络连接常用的设置包括是否开启对多 work process 下的网络连接进行序列化是否 允许同时接收多个网络连接选取哪种事件驱动模型来处理连接请求每个 word process 可以同时支持的最大连接数等。**这部分的配置对 Nginx 的性能影响较大在实际中应该灵活配置。 worker_connections 768; //最大链接数为768 multi_accept on; // 设置nginx服务器是否允许并发连接默认注释 第三部分http全局块
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;location / {root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location /50x.html {root html;}}
}
nginx配置最复杂最需要配置的地方需要注意的是http 块也可以包括 http全局块、server 块。 http全局块 http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。 server块 配置映射的地方这块与虚拟主机密切相关每个 http 块可以包括多个 server 块而每个 server 块就相当于一个虚拟主机。而每个 server 块也分为全局 server 块以及可以同时包含多个 locaton 块。 全局 server 块 最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。例如listen 80server_name example.com。location 块 一个 server 块可以配置多个 location 块。 这块的主要作用是基于 Nginx 服务器接收到的请求字符串例如 server_name/uri-string对虚拟主机名称 也可以是IP 别名之外的字符串例如 前面的 /uri-string进行匹配对特定的请求进行处理。 地址定向、数据缓 存和应答控制等功能还有许多第三方模块的配置也在这里进行。 三、Nginx反向代理配置实例1.1 a. location指令说明 该语法用于匹配URL 语法如下 1、 用于不含正则表达式的 uri 前要求请求字符串与 uri 严格匹配如果匹配 成功就停止继续向下搜索并立即处理该请求。 2、~用于表示 uri 包含正则表达式并且区分大小写。 3、~*用于表示 uri 包含正则表达式并且不区分大小写。 4、^~用于不含正则表达式的 uri 前要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后立即使用此 location 处理请求而不再使用 location 块中的正则 uri 和请求字符串做匹配。 关于location后跟的路径名的问题
location / {# 根路径的配置# ...
}location /test/ {# 匹配以 /test/ 结尾的路径的配置可以有../test/page_01/..../test/page_02/等等多个。就是后面嵌套的目录不止一个# ...
}location /test {# 匹配 /test 开头的路径/test/page_01# ...
}
// 例如就只匹配cdeqswx b. server中的名词含义 server 一个server就相当于一个虚拟主机一个http块中可以设置多个server listen 端口号 表示监听的端口是部署完成后访问服务的端口 server_name 主机名可以是域名或则你的服务器ip location 表示映射在一个server中可以设置多个表示映射关系 location中的alias 相当于设置location / xxx中的xxx为alias url中的url的别名 root 可以在location也可以httpserverif块中在location中的作用是使用root url时候location / xxx路径需要加上xxx即url/xxx… index 后面可以跟一个或多个文件表示要访问的文件资源跟多个文件的时候nginx会顺序寻找文件1如果找不到或不能访问就去找下一个一直如此知道找到能访问的文件 location中的proxy_pass 中文名为代理到…作用就是将请求转发到后端服务器基本语法为proxy_pass URL;一般在服务器可一个设置为localhost:端口号因为程序就在服务器本机运行。 c. 实例 // 一般常用的是~
server {listen 8001;server_name 1.1.1.2;location ~ /vue/ { //表示请求以/vue/开头的路径忽略大小写proxy_pass http://localhost:8001}location ~ /edu/ { //表示请求以/edu/开头的路径proxy_pass http://localhost:8001}
}location / {
# matches the query / only. // 只有当用户请求是/时才会使用该location下的配置
[ configuration A ]
}location / {
# matches any query, since all queries begin with /, but regular
# expressions and any longer conventional blocks will be
# matched first.
[ configuration B ] // 可以匹配所有请求
}location ^~ /images/ {
# matches any query beginning with /images/ and halts searching,
# so regular expressions will not be checked.
[ configuration C ] // 匹配以/images/开头的任何查询并停止搜索表示匹配URL时忽略字母大小写问题
}location ~* \.(gif|jpg|jpeg)$ {
# matches any request ending in gif, jpg, or jpeg. However, all
# requests to the /images/ directory will be handled by
# Configuration C.
[ configuration D ] // 匹配任何以gif、jpg或jpeg结尾的请求
}location的使用实例 —— 以indexroot方式设置资源路径
server {listen 8080;server_name 47.108.157.141;location / {root /home/test/page;index index.html;}location /second {root /home/test/page/home/test/page后面真正的路径其实是/home/test/page/second;index second.html;}}// 将root放在外面
server {listen 1645;server_name 47.108.157.141;root /home/server/gitar;index CDEFGAB.HTML;location / {try_files $uri $uri/ 404;}}// 访问路径http://47.108.157.141:8080/second.htmlweb服务器返回/home/test/page的下的secondlhtmlindex.html同理只不过没有second目录了
// 注意这里second是root和index的结合root表示访问资源的根本路径index表示访问的文件在第二个location中web服务器寻找资源时候会将second加在/home/test/page后面真正的路径其实是/home/test/page/secondlocation的使用实例 —— 以alias方式设置资源路径
alias也是用来设置文件资源路径的它与root不同点主要在于root会保留/后面的元素加到寻找资源的路径上alias是是直接将/后面的内容丢弃或则说直接用/后面的内容给寻找资源的路径取了一个别名。例如在/home/test/page/third有third.html, /home/test/page/second下有second.html则两种方式如下aliaslocation /third {alias /home/test/page/third;index third.html;}root:location /second {root /home/test/page;index second.html;}
c. location中的proxy_pass属性当使用 Nginx 作为反向代理服务器时proxy_pass 是一个重要的指令用于指定将请求代理转发到的后端服务器
注意
在nginx中配置proxy_pass代理转发时如果在proxy_pass后面的url加/表示绝对根路径如果没有/表示相对路径把匹配的路径部分也给代理走。因为location的匹配模式。
一般proxy_pass后面有四种情况ip:端口ip:端口/ip:端口/上下文ip:端口/上下文/下面我就这四种情况进行举例说明。 例如访问地址http://192.168.2.39:8081/hussarApi/test/getList。下方为代理地址 ip端口 location /hussarApi/ {proxy_pass http://192.168.2.188:8280; //后面没有/
}代理地址http://192.168.2.188:8280/hussarApi/test/getList //url后无/为相对路径,连同匹配部分hussarApi也追加到代理地址上 ip:端口/ location /hussarApi/ {proxy_pass http://192.168.2.188:8280/; //多了一个/
}代理地址http://192.168.2.188:8280/test/getList //url后有/为绝对根路径会将hussarApi部分去掉代理地址拼接hussarApi后面路径 ip:端口/上下文或则ip:端口/上下文/ 后面没有/
location /hussarApi/ {proxy_pass http://192.168.2.188:8280/aaa;
}// 后面有/
location /hussarApi/ {proxy_pass http://192.168.2.188:8280/aaa/;
}代理地址http://192.168.2.188:8280/aaa/test/getList/都一样 //只要url后有上下文会将访问地址hussarApi去掉代理地址直接拼接访问地址hussarApi后面路径 尝试用上面第二种方法转发docker部署的应用时遇到一个问题页面可以转发但是其中的静态文件无法加载因为请求路径改变静态文件的路径也需要改变。 server {listen 4000;server_name 47.108.157.144;location /test/ {proxy_pass http://localhost:3000/;}}注意location 为正则表达式的时候2不能使用即location 正则情况url后面不能加 /通常情况下使用最多的是用location / 直接用端口作为一个应用的标识.
server {listen 4000;server_name 47.108.157.10;location / {proxy_pass http://localhost:3000/;}
}root后面的路径 没有斜杠开头代表相对路径从nginx服务器的根目录找有斜杠开头表示绝对路径从linux主机的根目录开始找
server_name 也可以用通配符匹配
server_name *.www.xxx; // 匹配以www.xxx结尾的域名
server_name www.xxx.*; // 匹配以www.xxx开头的域名proxy_pass和root是二选一的proxy_pass是代理后端服务。root是寻找静态资源