浅谈nginx

nginx配置详解

是一个高性能的HTTP 和反向代理服务器,特点是占有内存少,并发能力强

用途:
  1. 可以作为静态页面的 web 服务器
  2. 正向代理(通过nginx代理 访问外部资源,比如fanqiang)
  3. 反向代理 (隐藏真实服务器地址,通过nginx反向访问实际服务器)
  4. 负载均衡 (相同请求分发到多台服务器)
  5. 动静分离 (把动态资源和静态资源分开部署)
配置:

配置文件内容

  1. 全局块:配置服务器整体运行的指令 例:worker_processes 1;#处理并发数配置
  2. events块:影响服务器与用户的网络连接 例:worker_connections 1024; #支持的最大连接数为1024
  3. http块
  • http全局块:http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等
  • server块:这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了
    节省互联网服务器硬件成本。
    每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
    而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块
# 读取其它server块配置文件
	include vhost/*.conf;

1、全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。
2、location 块
一个 server 块可以配置多个 location 块。
这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称
(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓
存和应答控制等功能,还有许多第三方模块的配置也在这里进行

应用
  1. 反向代理1 效果:访问8080端口 跳转到8088服务
server {  
        listen       8080;         
        server_name  localhost;             
        client_max_body_size 1024M;
        location / {
            proxy_pass http://localhost:8088;
			index  index.html index.htm;
        }
	}

注:localhost可替换成实际ip
2. 反向代理2 效果:根据访问的路径跳转到不同端口的服务中

  • 访问http://127.10.0.1:8081/test1/ 跳转到http://127.10.0.1:8088
  • 访问http://127.10.0.1:8081/test2/ 跳转到http://127.10.0.1:8082
server {  
        listen       8081;              
        server_name  localhost;
        client_max_body_size 1024M;
        location ~ /test1/ {
            proxy_pass http://localhost:8088;
        }
		location ~ /test2/ {
            proxy_pass http://localhost:8082;
        }
	}

1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配
成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~
标识。
3. 负载均衡 效果:访问nginx 8083代理地址 随机访问到两台主机8088地址

  • 在http全局块中
http {
	upstream myserver{ 
		server 192.168.6.40:8088 weight=10; 
		server 192.168.6.162:8088 weight=10; 
	}
	server {  
        listen       8083;                                  
        server_name  localhost;                             
        client_max_body_size 1024M;
        location / {
            proxy_pass http://myserver;
        }
	}
分配策略

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2、weight
weight 代表权,重默认为 1,权重越高被分配的客户端越多
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如:

upstream myserver{ 
		server 192.168.6.40:8088 weight=10; 
		server 192.168.6.162:8088 weight=10; 
	}

3、ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:

upstream myserver{ 
		ip_hash
		server 192.168.6.40:8088; 
		server 192.168.6.162:8088; 
	}

4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream myserver{ 
		server 192.168.6.40:8088; 
		server 192.168.6.162:8088; 
		fair;
	}
  1. 动静分离
    将动态请求和静态请求分开,nginx处理静态页面,tomcat处理动态页面 通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使
    浏览器缓存过期时间,减少与服务器之前的请求和流量
server {  
        listen       8080;                    
        server_name  localhost;               
        client_max_body_size 1024M;
        location / {
            root D:\htmlTest;
			index  index.html index.htm;
        }
		location /api/ {
            proxy_pass http://localhost:8088;
        }
	}
  1. 代理websocket服务
server {  
        listen       80;                  
        server_name  localhost;        
        client_max_body_size 1024M;
        location / {
			#root html;
            proxy_pass http://localhost:8088;  #websocket地址
			#index  index.html index.htm;
			proxy_http_version 1.1;
			proxy_set_header Upgrade $http_upgrade; #方式
			proxy_set_header Connection "upgrade";  #方式
			proxy_read_timeout 3600s;
        }
	}
  1. 高可用集群
    Keepalived+Nginx 主从模式
    Keepalived+Nginx 双主模式

  2. nginx的日志文件

  • /var/log/nginx
try_files $uri $uri/ /index.html;

nginx解决跨域请求

同源指 域名、协议、端口均相同

前后端分离项目,无论是否部署在同一台机器上,都应尽量使前后端项目暴露于同一域下【协议+主机+端口都相同】,方法就是在部署前端得Nginx上,使用同一个域来反向代理后端项目

  • 好处
  1. 彻底、一劳永逸解决跨域
  2. 共享域名
  3. 利用反向代理隐藏后端地址
  4. 集中管理
  5. 配置方式
server {
    # 0.与浏览器交互的只有这个Nginx虚拟服务器,浏览器看到的【协议+主机+端口】永远只有一个,整个交互过程始终处于同一域下,故不会出现跨域问题
    listen 80;
    server_name localhost;
    
    # 1.前端项目打包好的dist目录,放置到这个目录下
    root /data/;
    
    # 2.后端多个微服务接口通过统一网关(9000)对外暴露,nginx反向代理统一网官 
    # 3.【code|auth|admin|buy】是后端各微服务接口前缀,网关按这个前缀来路由请求。
    location ~* ^/(code|auth|admin|buy) {
       proxy_pass http://127.0.0.1:9000;
       #proxy_set_header Host $http_host;
       proxy_connect_timeout 15s;
       proxy_send_timeout 15s;
       proxy_read_timeout 15s;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
一个完整的例子
server {
        listen       8087;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;


        location / {
             root /usr/local/package/front/ps_report;
             try_files $uri $uri/ /index.html;
        }

        location /api/ {
             proxy_pass http://172.16.85.52:8082;
         }
        location /wx/ {
             proxy_pass http://172.16.85.52:8082;
         }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

https配置

   listen 443 ssl;
    ssl_certificate /home/httpscerts/cmfullchaincert.cer;
    ssl_certificate_key /home/httpscerts/cmkey.key;
    server_name tmp5.raisetech.cn;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值