nginx 学习笔记

时间:2025-03-21 08:37:38

Nginx

  • 修改nginx配置文件之后,用reload或者restart重载配置文件生效
    • 如果配置文件没有重载成功,会给你提示,你在日志中就可以看到启动失败的原因,然后排查
  • 通过lsof -i:prot 可以看出nginx是否监视成功,如果监视成功,但是在网页看不到,说明没有开放端口

配置文件

全局配置

worker_processes 1;值越大,其并发能力越强,但是会受到硬件的影响


events{
	worker_connections 1000;#用户最大链接数
}

这部分配置与用户网络的关系比较大


http 核心配置

http{
    #http全局配置
    server{
        listen 80;#监听端口,配置后可以通过 lsof -i:80 查看
        server_name localhost;#定义网站域名 多个用空格分开 没有域名用localhost或其等效替代
        #access_log logs/ main; #访问日志
        location / {
            root /home/www/myweb;#网站根目录
            index ;#首页,默认是index
        }
        error_page 404 /;#自定义404
        
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;  //php-fpm 配置的地址,通过lsof -i:9000查看
        #    fastcgi_index  ;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
        
        # HTTPS 相关配置
        #
        #server {
        #    listen       443 ssl;  //监听443端口,即ssl
        #    server_name  localhost;
        ### 以下为ssl相关配置
        #    ssl_certificate      ;//指定pem文件路径
        #    ssl_certificate_key  ;//指定key文件路径
        #    ssl_session_cache    shared:SSL:1m;//指定session cache大小
        #    ssl_session_timeout  5m;//指定session超时时间
        #    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;//指定ssl协议
        #    ssl_ciphers  HIGH:!aNULL:!MD5;//指定ssl算法
        #    ssl_prefer_server_ciphers  on;//优先采取服务器算法
        #    location / {
        #        root   html;//网站根目录
        #        index   ;
        #    }
        #}
    }
}
#静态资源配置
location ~ .*\.(js|css)?$
{
    expires 12h;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    expires 30d;
}

如果在listen 80;那一层指定了root 那么就不需要在location 中指定

单独解析静态文件有一个好处就是,这些静态文件一般是不变的,如果用户再次访问的时候,他会直接重定向,让用户直接拿浏览器的数据,不但减少了流量,而且增加了服务器的抗压能力。

然后就是关于 expires 过期时间的问题,我们不用担心我们更新服务器后,静态资源还按照以前的加载,nginx会自动比对文件的日期,如果发现你更新了,他会重新下载

proxy_pass http://127.0.0.1:8080;路由转发

  • 注意
    • 前面是有http://不是单单只有端口号

对location的理解和配置

  • 理解

    • 当我们对监听的端口和域名发起指定请求之后,nginx就会帮助我们找到这个server
    • 但是,我们发送的请求不只有ip和端口,我们还有其他附加的url,所有location帮助我们在这里处理了这些请求
  • 配置

    • ~ + 一个正则表达式

负载均衡

upstream myserver{#myserver是自己起的名字,注意这个是和server是同级目录
    server ip:port1;
    server ip:port2;#参与均衡的两个端口
}
server{
    listen 80;
    server_name ip;
    
    location / {
        proxy_pass http://myserver;#你刚刚起的服务名
    }
}
  • 因为是负载均衡,所以我们必然要提供一个和均衡端口不一样的端口,所以要结合server才能实现