博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx
阅读量:3962 次
发布时间:2019-05-24

本文共 4540 字,大约阅读时间需要 15 分钟。

目录

1.什么是nginx

1.1 介绍

在这里插入图片描述

1.2 nginx的安装

1、nginx官方下载地址:

2、下载完后将压缩包解压即可

3、nginx配置文件为根目录下conf\nginx.conf

1.3 Nginx常用命令

tasklist /fi "imagename eq nginx.exe"    查看nginx进程start nginx        启动nginxnginx -s quit      安全关闭nginx -s stop      强制关闭nginx -s reload    改变配置文件时,重启nginx工作进程,使配置生效nginx -s reopen    打开日志文件nginx -v           查看版本nginx -h           查看帮助信息

重启:.\nginx.exe -s reload

1.4 nginx的配置文件详解

...              #全局块events {
#events块 ...}http #http块{
... #http全局块 server #server块 {
... #server全局块 location [PATTERN] #location块 {
... } location [PATTERN] {
... } } server {
... } ... #http全局块}

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。

2、nginx的应用场景

1、http服务器:Nginx是一个http服务器,可以独立提供http服务。可以作为静态网页服务器。

2、虚拟主机:可以实现一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。

3、反向代理:当网站的访问量达到一定程度后,单台主机不能满足用户的请求时,需要用多台服务器集群可以使用Nginx做反向代理。

4、负载均衡:并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台闲置的情况。

2.1.http反向代理配置

server {
listen 80; server_name localhost; client_max_body_size 1024M; location / {
proxy_pass http://localhost:8082; proxy_set_header Host $host:$server_port; } }

保存配置文件后重启Nginx,当访问localhost的时候,就相当于访问localhost:8082了

2.2 负载均衡配置(3种)

2.2.1 RR

这是Nginx的默认策略,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstream test {
server localhost:8080; server localhost:8081;}server {
listen 80; server_name localhost; client_max_body_size 1024M; location / {
proxy_pass http://test; proxy_set_header Host $host:$server_port; }}

假如upstream中其中一个服务8080挂掉了,访问http://localhost 的时候,也不会有问题,会默认跳转到http://localhost:8081,。因为Nginx会自动判断服务器的状态,如果服务器处于不能访问,就不会跳转到这台服务器,所以也避免了一台服务器挂了影响使用的情况,这就是Nginx的默认策略RR。

2.2.2 权重

指定每个服务的轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

upstream test {
server localhost:8080 weight=9; server localhost:8081 weight=1;}server {
listen 80; server_name localhost; client_max_body_size 1024M; location / {
proxy_pass http://test; proxy_set_header Host $host:$server_port; }}

假如有10次请求,很有可能8081服务被访问1次,8080被访问9次。

2.2.3 ip_hash

上面两种方式都有一个问题,那就是下一个请求来的时候请求可能分发到另外一个服务器,当程序不是无状态的时候(比如服务端采用session保存数据),这时候就有一个很大的很问题。比如把登录信息保存到了session中,那么跳转到另外一台服务器的时候就需要重新登录了,所以很多时候我们需要一个客户只访问一个服务器,那么就需要用ip_hash了,ip_hash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

upstream test {
ip_hash; server localhost:8080; server localhost:8081;}server {
listen 80; server_name localhost; client_max_body_size 1024M; location / {
proxy_pass http://test; proxy_set_header Host $host:$server_port; }}

3 静态服务器搭建

nginx配置文件搭建静态服务器

修改conf下的nginx.conf

# 配置代理服务器的地址,即Nginx安装的服务器地址、监听端口、默认地址    server {
#1.监听8889端口 listen 8889; #对于server_name,如果需要将多个域名的请求进行反向代理,可以配置多个server_name来满足要求 server_name localhost; #访问本地E:/source文件夹 访问路径为localhost:8889/file/a.png 实际访问路径为 E:/source/file/a.png location /file/ {
root E:/source/; autoindex on; } }

在这里插入图片描述

3 跨域问题

server {
listen 80; server_name localhost; location / {
add_header 'Access-Control-Allow-Origin' '$http_origin'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'POST, GET, OPTIONS, DELETE, PUT'; add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; #跨域OPTIONS请求,set response header后直接204返回 if ($request_method = 'OPTIONS') {
return 204; } proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://test; }}

转载地址:http://ecezi.baihongyu.com/

你可能感兴趣的文章
Windows server 2016 设置多用户登陆
查看>>
偶然发现的面包屑
查看>>
CentOS 7 下挂载NTFS文件系统磁盘并设置开机自动挂载
查看>>
非插件实现Typecho语法高亮
查看>>
windows 下 netsh 实现 端口映射(端口转发)
查看>>
两个好用的命令行工具 watch 和 rsync
查看>>
信安入门神级书单
查看>>
【IPFS指南】IPFS的竞争对手们(一)
查看>>
docker更换国内镜像
查看>>
CentOS 下 tree命令用法详解
查看>>
docker上传镜像至Registry时https报错解决方法
查看>>
安装 docker-compose (实测可用,妈妈再也不用担心被墙了)
查看>>
docker下删除none的images
查看>>
Linux提权获取敏感信息方法
查看>>
Ubuntu 16.04开机A start job is running for Raise network interface(5min 4s)解决方法
查看>>
Ubuntu 16.04开机隐藏菜单缩短时间
查看>>
Ubuntu 更换国内源
查看>>
Ubuntu16.04下Docker pull connection refused 解决办法
查看>>
postgres基本操作(个人总结版)
查看>>
The AnimationClip 'Walk' used by the Animation component 'Pig' must be marked as Legacy.
查看>>