前端10min钟快速入门nginx!

9.9min钟快速入门nginx!学不会评论区见!

什么是nginx

Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好。

安装

windows下nginx的安装及使用

官网下载稳定版安装包(nginx.org/en/download...

下载后解压文件

云服务器安装

笔者安装在usr/locla目录下,你可以按照自己的想法来

下面的安装过程,直接输入命令即可

1.安装所需环境

复制代码
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

2.在usr/locla目录下下载nginx(也可以直接本地下载好压缩包复制到服务器里)

arduino 复制代码
wget http://nginx.org/download/nginx-1.13.7.tar.gz

3.解压压缩包

复制代码
tar -xvf nginx-1.13.7.tar.gz

4.删除压缩包(可以不删)

bash 复制代码
rm -f nginx-1.13.7.tar.gz

5.//进入nginx目录 cd /usr/local/nginx/nginx-1.13.7执行[命令]

bash 复制代码
./configure

执行make[命令]

go 复制代码
make

执行make install命令

go 复制代码
make install

6.删除安装包(可以不删)

bash 复制代码
rm -f nginx-1.13.7

启动nginx

windows环境启动

  • 直接双击nginx.ex
  • 打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 start nginx ,回车即可

云服务器

进入/usr/local/nginx/sbin目录,输入./nginx即可启动。

验证是否启动成功

直接在浏览器地址栏输入网址 http://localhost:80, (云服务器的话这里localhost改成服务器IP)

回车,出现以下页面说明启动成功

异常处理

  • 如果端口被占用,启动失败:

查看端口占用情况

复制代码
netstat -ntlp

找到占用端口号pid,結束該进程

bash 复制代码
kill 6751

基础命令

启动

  • 服务器的nginx目录下的sbin目录: ./nginx
  • windows下 C:\server\nginx-1.0.2>start nginx C:\server\nginx-1.0.2>nginx.exe(点击也可以)

停止

  • windows下 C:\server\nginx-1.0.2>nginx.exe -s stop C:\server\nginx-1.0.2>nginx.exe -s quit

重启

  • 服务器的nginx目录下的sbin目录: ./nginx -s reload

强制结束进程

  • kill - 9 nginx

配置详解

默认配置文件

默认配置路径

bash 复制代码
/usr/local/nginx/conf/nginx.conf

这个路径和你的安装目录有关

nginx.conf 的注释符号为: #, 默认的 nginx 配置文件 nginx.conf 内容如下:

yml 复制代码
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid  logs/nginx.pid;
events {
    worker_connections  1024;
}

http {
    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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ .php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # 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;
    #    }
    #}

}

由默认配置文件可知,当访问80端口的'/'路径时,默认指向/usr/local/nginx/html这个文件夹地址。

配置文件结构解析

yml 复制代码
...              #全局块

events {         #events块
   ...
}

http              #http块
{
    ...           #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}
  • 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
  • events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  • http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  • server块:配置虚拟主机的相关参数,一个http中可以有多个server。
  • location块:配置请求的路由,以及各种页面的处理情况。

下面给大家上一个配置文件,作为理解。

yml 复制代码
########### 每个指令必须有分号结束。#################
---------------------------全局块---------------------------------------------------
worker_processes 1;  						      	#允许生成的进程数,值越大,可处理的并发量也越多

---------------------------events块---------------------------------------------------
# 主要影响nginx服务器与用户的网络连接

events {
  worker_connections  1024;    				#最大连接数,默认为512
}
---------------------------http块---------------------------------------------------
http {
  include       mime.types;   									 #文件扩展名与文件类型映射表
  default_type  application/octet-stream;				 #默认文件类型,默认为text/plain
  #access_log off; #取消服务日志    
  log_format myFormat '$remote_addr--$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
  access_log log/access.log myFormat;  					#combined为日志格式的默认值
  sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
  sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
  keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。
  
  upstream mysvr {   
    server 127.0.0.1:7878;
    server 192.168.10.121:3333 backup;  #热备
  }
  error_page 404 https://www.baidu.com; #错误页
  
  http -----------------------server块---------------------------------------------------
  
    server {
    keepalive_requests 120; 					#单连接请求上限次数。
    listen       4545;   							#监听端口
    server_name  127.0.0.1;   				#监听地址       
    location  ~*^.+$ {     					  #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
      #root path;  #根目录
      #index vv.txt;  #设置默认页
      proxy_pass  http://mysvr;  			#请求转向mysvr 定义的服务器列表
      deny 127.0.0.1; 								#拒绝的ip
      allow 172.18.5.54;              #允许的ip           
    } 
  }
}

配置示例

配置反向代理(一)

💡实现效果:打开浏览器,在浏览中输入www.123.com,跳转到百度的首页

nginx.conf配置文件修改

打开nginx的配置文件conf,在server块的location中配置转发的地址

bash 复制代码
proxy_pass https://www.baidu.com/;  				#请求转发至设置的地址
ini 复制代码
worker_processes  1;
events {
    worker_connections  1024;
}
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;
            proxy_pass https://www.baidu.com/;  				#请求转发至设置的地址
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

保存文件后,打开命令行工具,重启服务

复制代码
nginx   -s  reload

浏览器输入 http://localhost/ ,发现已经确实进入的是百度页面。


host文件配置

浏览器访问一个域名时,首先会根据hosta文件的配置来匹配,因此,我们修改host文件,使本地的www.123.com指向loaclhost的ip。

windows下host文件位置: C:\Windows\System32\drivers\etc

复制代码
127.0.0.1 www.123.com

配置方向代理(二)

💡实现效果:

在浏览中输入www.123.com/a,跳转到百度的首页

在浏览中输入www.123.com/b,跳转到淘宝的首页

配置如下:

yml 复制代码
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;                #监听端口
        server_name  localhost;         #监听地址
        location = /a {
        proxy_pass https://www.baidu.com/;  #请求转发至设置的地址
        }
        location = /b {
          proxy_pass https://www.taobao.com/;  #请求转发至设置的地址
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}
相关推荐
曲幽1 小时前
FastAPI实战:WebSocket vs Socket.IO,这回真给我整明白了!
python·websocket·nginx·socket·fastapi·web·async·socketio
袁庭新4 小时前
M系列芯片Mac上通过Homebrew一键安装/卸载Nginx并上线项目全指南
运维·nginx·macos·袁庭新·袁庭新ai
Densen20145 小时前
发布blazor应用到Linux, 使用nginx作为WebSocket代理
linux·websocket·nginx
不是书本的小明5 小时前
Apache vs Nginx vs Tomcat 核心区别与优化
nginx·tomcat·apache
困惑阿三1 天前
客户消息及时反馈
nginx·node.js·飞书·企业微信
liurunlin8881 天前
httpslocalhostindex 配置的nginx,一刷新就报404了
运维·nginx
BullSmall1 天前
Nginx负载均衡会话保持配置指南
运维·nginx·负载均衡
你才是臭弟弟1 天前
Nginx部署前后端
运维·nginx
_下雨天.2 天前
Nginx性能调优与深度监控
运维·nginx