Zhi-什么是Nginx+安装

Nginx是一个高性能的HTTP和反向代理服务器,常用于实现负载均衡和静态资源虚拟化。反向代理隐藏真实服务器,提高安全性,而正向代理则是客户端通过代理访问目标服务器。Nginx安装涉及多个依赖库,如PCRE、zlib和openssl。其进程模型包括master和worker,worker通过抢占机制处理请求,利用异步非阻塞的事件处理机制实现高并发。Nginx的高并发性能得益于其高效的进程管理和多路复用器。

什么是Nginx

简介

1.nginx是一个高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务
2.主要功能反向代理
3.通过配置文件可以实现集群和负载均衡
4.静态资源虚拟化

常见的服务器

MS IIS
Weblogic Jboss
Tomcat Jetty
Apache Nginx
Netty

什么是反向代理

要说反向代理,就要先聊一聊正向代理

什么是正向代理

1.客户端请求目标服务器之间的一个代理服务器
2.请求会先经过代理服务器,然后再转发请求到目标服务器,获得内容后最后响应给客户端

什么是反向代理

1.用户请求目标服务器,由代理服务器决定访问哪个IP,哪个计算机节点,转发由反向代理服务器去处理的

反向代理使用场景

反向代理之路由

1.虚拟主机,路由的分发和请求
shop.zk777718.com
center.zk777718.com
api.zk777718.com/image

Nginx的安装

  1. 去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本
  2. 上传nginx到linux系统
  3. 安装依赖环境
    (1)安装gcc环境
    yum install gcc-c++
    (2)安装PCRE库,用于解析正则表达式
    yum install -y pcre pcre-devel
    (3)zlib压缩和解压缩依赖,
    yum install -y zlib zlib-devel
    (4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https
    yum install -y openssl openssl-devel
  4. 解压,需要注意,解压后得到的是源码,源码需要编译后才能安装
    tar -zxvf nginx-1.16.1.tar.gz
  5. 编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错 mkdir /var/temp/nginx -p
  6. 在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件
    ./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
    如图所示

7.make make install
8. cd /usr/local/nginx/sbin
./nginx 启动nginx
停止:./nginx -s stop
重新加载:./nginx -s reload
./nginx -t
注意事项:
如果在云服务器安装,需要开启默认的nginx端口:80
填写需要打开的端口和允许访问的ip段,保存,即可查看新增的规则
如果是虚拟机:systemctl stop firewalld(关闭防火墙)
systemctl status firewalld (查看防火墙状态)

Nginx的进程模型

master进程:主进程
worker进程:工作进程

master主要是管理worker的进程,worker是做事情的,master接收到外界的指令或者信号,可以把信号传递给worker,
master会监听worker,如果worker进程异常退出了,master会重新启动一个worker进程
每一个进程相互独立的

worker抢占机制

由master主进程fork出子进程,worker,accept_mutex(互斥锁)

传统服务器时间处理

假设一个客户端client1请求被阻塞,client2就会等待,也就是VIO。为了解决这种方式,master会fork出一个新的进程worker2

Nginx事件处理

假设client1的请求阻塞了,但是nginx是异步非阻塞的,发现client1阻塞了,但是没有关系,它会去处理下一个client2,主要是worker1事件机制:use epoll;linux的epoll模型,一个工作进程差不多处理6-8W个请求,CPU越多,内存越大,处理的请求越多
如果nginx最大连接数少,用户就会出现卡顿的现象,用户请求数比较多,但是配置连接数少,

Nginx为什么能达到那么大并发,性能那么高?

1.worker的抢占机制
2.模型采用的是异步非阻塞的通信模式模式,多路复用器
### Nginx 中跨域的概念 跨源资源共享(CORS, Cross-Origin Resource Sharing)是一种机制,它允许受限资源上的浏览器与另一个域名上的服务器进行交互。这种机制通过在HTTP头部加入额外字段来实现,从而使得服务端能够控制哪些来源可以访问其资源。 当客户端发起请求到不同源的服务器时,默认情况下会受到同源策略的限制。为了使这些请求合法化并被目标服务器接受,就需要配置相应的 CORS 支持。对于使用 Nginx 作为反向代理或静态文件服务器的情况来说,在其中设置合适的响应头就可以满足这一需求[^1]。 ### 完整的基础跨域配置示例 下面是一个简单的 Nginx 配置片段用于处理来自任何地方的 HTTP 请求,并添加必要的 CORS 头部: ```nginx server { listen 80; server_name localhost; location / { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; if ($request_method = 'OPTIONS') { return 204; } root html; index index.html index.htm; } } ``` 这段配置做了如下几件事: - `add_header`指令用来指定要附加给客户端回应中的HTTP首部; - 对于预检请求(`OPTIONS`)直接返回状态码204表示成功而无需进一步处理实际的数据获取操作;这有助于提高性能同时也遵循了W3C标准的要求。 ### Docker环境中Nginx的部署与跨域配置 如果是在容器化的环境下工作,则可以通过编写一个自定义的 NGINX 配置文件并将该文件挂载至容器内相应位置完成上述相同功能。具体做法包括但不限于创建名为 `default.conf` 的文件放置前述内容之后利用 `-v` 参数将其映射进去[^2]。 另外需要注意的是,前端应用被打包后的静态资源应当放在 Nginx 可以访问的位置比如 `/usr/share/nginx/html` 或者其他由 `root` 指令所指向的地方以便正确加载显示网页[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值