学习Nginx

一、Nginx概述

Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用

二、Nginx安装

 

  1. 环境准备
  • gcc yun install gcc-c++
  • zlib yum install -y zlib zlib-devel
  • prce yum install -y prce prce-devel
  • opsnssl yum install -y openssl openssl-devel
  1. 下载nginx解压
  1. 进入目录执行命令

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

自定义配置信息,非必要,可以直接执行 ./configure

  1. 执行make命令编译 执行make install安装
  2. 安装完成后到nginx目录启动,默认访问的端口是80端口
  • 启动 ./nginx
  • 指定配置文件启动 ./nginx -c nginx.conf
  • 强制关闭 ./nginx -s stop
  • 退出 ./nginx -s quit
  • 重新加载配置文件,先关闭后启动 ./nginx -s reload
  • 检查配置文件 ./nginx -c nginx.conf -t

三、Nginx配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# 配置worker进程运行用户,nobody也是一个linux用户,一般用于启动程序,没有密码
#user  nobody;
 
# 配置工作进程数量,根据硬件调整,通常等于CPU数量或者2倍CPU数量
worker_processes  1;
 
# 配置全局错误日志以及类型 默认级别是error. debug| info | notice | warn | error | crit
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
# 配置进程pid文件
#pid        logs/nginx.pid;
 
 
# 配置工作模式和链接数
events {
    # 配置每个worker进程链接数上限,nginx支持的总连接数就等于worker_connections * worker_processes,上限是65535
    worker_connections  1024;
}
 
# 配置http服务器,利用它的反向代理功能实现负载均衡
http {
  # 配置nginx支持哪些多媒体类型,具体类型查看conf/mime.types
  include       mime.types;
   
  # 默认文件 流类型,可以理解位支持任意类型
  default_type  application/octet-stream;
   
  # 配置日志格式
  #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  #                  '$status $body_bytes_sent "$http_referer" '
  #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
  # 配置access.log 日志及存放路径,并使用上面定义的main日志格式
  #access_log  logs/access.log  main;
     
  # 开启高效文件传输模式
  sendfile        on;
   
  # 防止网络阻塞
  #tcp_nopush     on;
     
  
  #keepalive_timeout  0;
  # 长连接超时时间
  keepalive_timeout  65;
     
  # 开启gzip压缩输出
  #gzip  on;
     
   
  # 配置虚拟主机
  server {
      listen       80; # 配置监听端口号
      server_name  localhost; # 配置服务名
 
      #charset koi8-r;  # 配置字符集
 
      #access_log  logs/host.access.log  main; # 配置本虚拟主机的访问日志
       
      # 默认的匹配斜杠的请求,当访问路径中有斜杠,会被该location匹配到并进行处理
      location / {
            # root是配置服务器的默认网站根目录位置,默认位nginx安装目录下面的html目录
          root   html;
          # 配置首页文件的名称
          index  index.html index.htm;
      }
             
      # 配置404页面
      #error_page  404              /404.html;
 
      # redirect server error pages to the static page /50x.html
      #
      error_page   500 502 503 504  /50x.html; # 配置50x错误页面
       
      # 精确匹配
      location = /50x.html {
          root   html;
      }
             
      # PHP脚本请求全部转发到Apache处理
      # proxy the PHP scripts to Apache listening on 127.0.0.1:80
      #
      #location ~ \.php$ {
      #    proxy_pass   http://127.0.0.1;
      #}
             
      # PHP脚本请求全部转发到FastCGI处理
      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
      #
      #location ~ \.php$ {
      #    root           html;
      #    fastcgi_pass   127.0.0.1:9000;
      #    fastcgi_index  index.php;
      #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
      #    include        fastcgi_params;
      #}
 
      # deny access to .htaccess files, if Apache's document root
      # concurs with nginx's one
      #
      #location ~ /\.ht {
      #    deny  all;
      #}
}
 
 
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen       8000;
#    listen       somename:8080;
#    server_name  somename  alias  another.alias;
 
#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}
 
 
# HTTPS server
#
#server {
#    listen       443 ssl;
#    server_name  localhost;
 
#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;
 
#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;
 
#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;
 
#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}

  

四、配置反向代理

五、nginx的负载均衡策略

  1. 轮询:每个请求会按时间顺序逐一分配到不同的后端服务器。
  2. 权重:权重方式,在轮询策略的基础上指定轮询的几率
  1. ip_hash:ip绑定,每个请求按照访问ip的hash分配,这个方法确保了相同的客户端请求一直发送到相同的服务器,以保证session会话。这样每个用户都固定访问一个后端服务器,可以解决session不能跨服务器的问 
  1. least_conn:把请求转发给链接数量较少的后端服务器。
  2. fair(第三方策略):按照服务器端的响应时间来分配请求,响应时间短的优先分配
  1. url_hash(第三方策略):按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。

 

 

posted @   snolin  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示