ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Nginx

2020-11-28 23:57:10  阅读:140  来源: 互联网

标签:index nginx server Nginx html location 服务器


正向代理与反向代理

正向代理服务器

客户端和目标服务器之间的服务器,客户端向代理发送一个请求指定目标服务器,然后代理向目标服务器请求并获得内容,并返回给客户端,平时说的代理服务器一般是正向代理服务器
核心:用户知道自己访问的目标服务器 场景:跳板机、访问原来无法访问的网站, 比如国外的一些站点

反向代理服务器

客户端和目标服务器之间的服务器,客户端向代理发送一个请求,然后代理向目标服务器请求并获得内容,并返回给客户端。反向代理隐藏了真实的服务器
核心:客户端不知道要访问的目标服务器是哪台服务器,代理会根据一定的策略选择一个真实的服务器进行请求
场景:访问淘宝,知道访问的域名是taobao.com, 但是后面提供数据的具体是什么域名或ip我们是不知道的
找房子 找中介(自己不知道房源在哪里 中介会隐藏房东信息)

Nginx安装

安装依赖 c语言的
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

上传nginx安装包
tar -zxvf nginx-1.18.0.tar.gz  解压
进到Nginx里  执行命令 
编译
./configure
make
make install 
默认安装路径
/usr/local/nginx
访问配置
cd /usr/local/nginx/sbin   
启动nginx
./nginx
设置开机自启动
cd /lib/systemd/system
vim /lib/systemd/system/nginx.service

[Unit]
Description=nginx service
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl enable nginx

在这里插入图片描述
在这里插入图片描述

域名备案和线上访问服务器应用流程解析

一个http请求基本流程
客户端通过发起域名资源请求 -> DNS解析获得IP -> 寻找服务器获得资源
域名和ip的关系,DNS作用
DNS:Domain Name Server 域名服务器 域名虽然便于人们记忆,但网络中的计算机之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS 就是进行域名解析的服务器
什么是cname和a记录
a记录 将域名指向一个IPV4地址
用户可以在此设置域名并指向到自己的目标主机地址上,从而实现通过域名找到服务器(也叫ip指向域名配置)aabbcc.com -> 120.24.216.117
cname 将域名指向另外一个域名
别名指向,可以为一个主机设置别名。比如设置open1024.com,用来指向一个主机 xdclass.net 那么以后就可以用open1024.com来代替访问 xdclass.net 了
www.xdclass.net --> xdclass.net

Nginx

目录核心介绍

conf #所有配置文件目录
nginx.conf #默认的主要的配置文件
nginx.conf.default #默认模板

html # 这是编译安装时Nginx的默认站点目录
50x.html #错误页面
index.html #默认首页

logs # nginx默认的日志路径,包括错误日志及访问日志
error.log #错误日志
nginx.pid #nginx启动后的进程id
access.log #nginx访问日志

sbin #nginx命令的目录
nginx #启动命令

常见命令
./nginx  #默认配置文件启动
./nginx -s reload #重启,加载默认配置文件
./nginx -c /usr/local/nginx/conf/nginx.conf #启动指定某个配置文件
./nginx -s stop #停止
#关闭进程,nginx有master process 和worker process,关闭master即可
ps -ef | grep "nginx" 
kill -9 PID

核心配置文件

分为三个部分

全局配置
server 主机设置
location(URL匹配特定位置的设置)


# 每个配置项由配置指令和指令参数 2 个部分构成
#user  nobody;  # 指定Nginx Worker进程运行以及用户组
worker_processes  1;   # 工作进程数  推荐配置成和CPU保持一致
​
#error_log  logs/error.log;  # 错误日志的存放路径  和错误日志
#error_log  logs/error.log  notice;  # 日志级别
#error_log  logs/error.log  info;  # 日志级别
​
#pid        logs/nginx.pid;   # 进程PID存放路径
​
# 事件模块指令,用来指定Nginx的IO模型,Nginx支持的有select、poll、kqueue、epoll 等。不同的是epoll用在Linux平台上,而kqueue用在BSD系统中,对于Linux系统,epoll工作模式是首选
events { 
    use epoll;
  # 定义Nginx每个进程的最大连接数, 作为服务器来说: worker_connections * worker_processes,
  # 作为反向代理来说,最大并发数量应该是worker_connections * worker_processes/2。
  #因为反向代理服务器,每个  并发会建立与客户端的连接和与后端服务的连接,会占用两个连接 
  #正向代理服务器是 worker_connections * worker_processes
    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;
​
    # 是否开启高效传输模式 on开启 off关闭
    sendfile        on;
    
    #减少网络报文段的数量
    #tcp_nopush     on;
​
    #keepalive_timeout  0;
    # 客户端连接保持活动的超时时间,超过这个时间之后,服务器会关闭该连接
    keepalive_timeout  65;
​
	# 压缩 	
    #gzip  on;
    
    # 虚拟主机的配置 重要
    server {
        listen       80; # 虚拟主机的服务端口
        server_name  localhost; #用来指定IP地址或域名,多个域名之间用空格分开
​
        #charset koi8-r;
​			#每个虚拟主机具体配置它的访问日志
        #access_log  logs/host.access.log  main;
​
        #URL地址匹配 
        #location  指令解释说明
		#该指令用于匹配URL 语法 location [ = | ~ | ~* | ^~ ] url {...} 
		#= 用于不含正则表达式的uri前, 要求请求字符串与uri 严格匹配。
		#如果匹配成功,就停止继续向下搜索并立即处理该请求
		#~ 用于uri包含正则表达式  区分大小写
		#~*  用于uri包含正则表达式  不区分大小写
        location / {
            root   html;  # 服务默认启动目录
            index  index.html index.htm; #默认访问文件,按照顺序找
        }
​
        #error_page  404              /404.html;   #错误状态码的显示页面
​
        # redirect server error pages to the static page /50x.html
        # 500 502 503 504 这些错误跳到 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;
    #    }
    #}
}

在这里插入图片描述

搭建前端静态文件服务器

什么是虚拟主机

指在一台物理主机服务器上划分出多个磁盘空间,每个磁盘空间都是一个虚拟主机,每台虚拟主机都可以对外提供Web服务,并且互不干扰,就类似虚拟机
利用虚拟主机把多个不同域名的网站部署在同一台服务器上,节省了服务器硬件成本和相关的维护费用
!!!配置之前,拷贝一份默认的出来,nginx配置容易出错且肉眼难看出来,自己仔细核对

Nginx虚拟主机配置
server {
listen 80;
server_name aabbcc.com;

location / {
root /usr/local/nginx/html;
index xdclass.html;
}
}

server {
listen 80;
server_name aabbccdd.com;

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

}

图片服务器

学javaweb、node、或者其他基础web项目,基本都是图片上传到项目本身,这个是生成很少用
公司一般会使用图片服务器或者云厂商提供的CDN
使用流程

前端提交图片->后端处理->存储到图片服务器->拼接好访问路径存储到数据库和范围前端

在这里插入图片描述

本地图片上传上去,配置专属访问路径

server {
        listen       80;
        server_name  aabbccdd.com;
        location /app/img {
          alias /usr/local/software/img/;
        }
  }
注意

在location / 中配置root目录
在location /path中配置alias虚拟目录, 目录后面的"/"符号一定要带上

Nginx经典案例挖掘accessLog日志

简介:介绍nginx的访问日志的用处

access.log日志用处

统计站点访问ip来源、某个时间段的访问频率
查看访问最频的页面、Http响应状态码、接口性能
接口秒级访问量、分钟访问量、小时和天访问量…

标签:index,nginx,server,Nginx,html,location,服务器
来源: https://blog.csdn.net/weixin_39304711/article/details/110211242

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有