Nginx 基础(一)

一 、Nginx简述

Nginx是一个开源、高性能、可靠的HTTP中间件、代理服务。


二 、常见的HTTP服务

1. HTTPD-Apache基金会

2. IIS-微软

3. GWS-Google

4. Nginx


三、为什么选择Nginx

原因一:IO多路复用epoll (主要解决了并发性的问题)

注1:多个描述符的I/O操作都能在一个线程内并发交替的顺序完成,这就叫做I/O多路复用,这里的“复用”指的是复用同一个线程。

注2:IO多路复用的实现方式有 select 、poll、epoll (逐渐进化)

原因二:轻量级

1、功能模块少(只保留了HTTP和其相关核心功能的模块)

2、代码模块化  

原因三:  CPU亲和(affinity)

注:cpu亲和是一种把cpu核心和Nginx工作进程绑定的方式,把每个worker进程固定在一个cpu上执行,减少切换cpu的cache,miss,获得更好的性能。

原因四:sendfile工作机制


四、Nginx 快速安装

注:Nginx官方下载页面:http://nginx.org/en/download.html


1. 编辑nginx yum源

vim /etc/yum.repos.d/nginx.repo


2. 将下面内容复制到这个文件上,然后保存。

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1


3. 执行yum安装  

yum -y install nginx

reboot  #重启系统


4. 确认nginx安装完成

nginx -v



注:

安装后nginx文件夹映射在本地windows上的目录如下

将Linux上文件映射到本地windows上教程: https://blog.csdn.net/m_nanle_xiaobudiu/article/details/80631437



五 Nginx 目录和配置语法

1. nginx安装目录

命令:rpm -ql nginx

2. Nginx 的配置语法(nginx.conf)

原始nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

参数解释:

user:设置nginx服务的系统使用用户(默认为nginx,非root)【更安全】

worker_processes: 工作进程数【最好与cpu核心数保持一致】

error_log:nginx的错误日志定义

pid:nginx服务启动时的pid【存放nginx pid的位置】

events部分:

worker_connections  每个进程允许最大连接数【一般调节到一万左右】

http部分:

logformat:定义日志类型

keeplive_timeout:设置客户端和服务端连接超时的时间

access_log:  访问日志

include /etc/nginx/conf.d/*.conf: 子配置文件( 大网站多站点可以在这里进行分开配置 )

3. 子配置文件格式

默认只有一个default.conf,当网站存在多个域名地址时,可以在子配置文件进行分开配置,比如这样



这样,nginx首先读取nginx.conf 配置文件, 我们在nginx.conf配置文件中进行一些基础公共部分的定义,然后在nginx.conf最末尾又include了conf.d文件夹向下的所有.conf文件

我们在conf.d文件夹下定义每一个站点域名的配置(比如包括网站根路径,重写规则,错误日志位置定义,访问日志位置定义等等,总之所有关于SERVER的定义通通在子配置文件中进行定义,而不是在nginx.conf中定义),比如下面这样

总结: 

1. 在nginx.conf中定义基础公共部分配置

2. 在conf.d文件夹下分别定义每一个server的配置

3. 当然,习惯用phpstudy的同学也可以在nginx.conf文件末尾再include vhost.conf文件,也是可以的

server {
    listen       80;
    server_name  test.passport.kk.com;

    charset utf-8;
    access_log  logs/access/test.passport.kk.com.access.log main;
    error_log   logs/error/test.passport.kk.com.log debug;

    root   "G:/Faraway/data/passport/htdocs";
    index  index.html index.htm index.php;

    location /favicon.ico {
        log_not_found off;
        access_log off;
    }location / {
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php/$1 last;
        }}location ~ \.php(.*)$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_param  PATH_INFO  $fastcgi_path_info;
                fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
                include        fastcgi_params;
    }location /doc {
         if (!-f $request_filename){
          rewrite ^/doc/(.*)$  /doc/index.php/$1 last;
        }}location /api {
         if (!-f $request_filename){
          rewrite ^/api/(.*)$  /api/index.php/$1 last;
        }}error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }}

Nginx初级 好文推荐 https://blog.csdn.net/u012486840/article/details/53098890

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core高性能服务器HTTP.SYS

如果我们只需要将ASP.NET CORE应用部署到Windows环境下,并且希望获得更好的性能,那么我们选择的服务器类型应该是HTTP.SYS。Windows环境下任何针对HTTP的网络监听器/服务器在性能上都无法与HTTP.SYS比肩。[本文节选《ASP.NET Core 6框架揭秘》第18章]一、…

Nginx 基础 ( 二)

一、HTTP请求 http请求包括客户端请求服务端 以及 服务端响应数据回客户端,如下 请求:包括请求行、请求头部、请求数据 响应:包括状态行、消息报头、响应正文 比如在Linux中curl请求网站获取请求信息和响应信息 curl -v http://www.kugou.com…

《金融行业应用解决方案白皮书》发布,金融自主创新未来可期!

日前,以“聚势赋能 行业共创”为主题的金融行业解决方案发布会在线上举行。麒麟软件发布《金融行业应用解决方案白皮书》,并发起成立“金融机具生态圈俱乐部”,助力金融行业用户高质量发展。金融信息系统曾经被国外厂商垄断金融信息系统作为国…

leetcode53 Maximum Subarray 最大连续子数组

题目要求 Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [-2,1,-3,4,-1,2,1,-5,4], the contiguous subarray [4,-1,2,1] has the largest sum 6.即:寻找数列中的一个子…

详解go语言的array和slice 【二】

上一篇 详解go语言的array和slice 【一】已经讲解过,array和slice的一些基本用法,使用array和slice时需要注意的地方,特别是slice需要注意的地方比较多。上一篇的最后讲解到创建新的slice时使用第三个索引来限制slice的容量,在操作新slice时…

详解Objective-C的meta-class

2019独角兽企业重金招聘Python工程师标准>>> 比较简单的一篇英文,重点是讲解meta-class。翻译下,加深理解。 原文标题:What is a meta-class in Objective-C? 原文地址:http://www.cocoawithlove.com/2010/01/what-is…

十倍程序员 | 使用 Source Generator 将 JSON 转换成 C# 类

前言有时候,我们需要将通过 WebAPI 接收 JSON 字符串转换成 C# 代码。Visual Studio 提供了一个功能菜单可以轻松实现:执行完成后,它会将生成的代码放在打开的的代码窗口中。但是,如果有多个 JSON 字符串需要转换,这个…

微软Microsoft Azure 机器学习工作室的案例之Image Classification using DenseNet

点击上方蓝字关注我们(本文阅读时间:10分钟)Microsoft Azure Machine Learning Studio是微软强大的机器学习平台,在设计器中,微软内置了15个场景案例,但网上似乎没有对这15个案例深度刨析的分析资料,所以我…

音乐分类

代码: 1 import numpy as np2 from scipy import fft3 from scipy.io import wavfile4 from sklearn.linear_model import LogisticRegression5 import random6 """7 使用logistic regression处理音乐数据,音乐数据训练样本的获得是使…

不管对不对,先把闹钟关了再说

小榆提前关闭早上闹钟,几乎工作日的早晨都是被这魔怔的铃声给拉扯醒,无论有多么不愿还是痛苦,可对这闹钟也无可奈何,就算一时果断掐掉接下来是另一回麻烦事。最后一天,已经顾不得多少,没什么令人惧怕的人或…

pycharm(windows)安装及其设置中文菜单

pycharm(windows)安装及其设置中文菜单 1.下载 在官网(http://www.jetbrains.com/pycharm/download/#sectionwindows)进行下载 或者到百度云进行下载 专业版:链接:http://pan.baidu.com/s/1bSSRds 密码&…

Tomcat定义虚拟主机案例

Tomcat定义虚拟主机案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.准备环境 1>.创建web程序的根目录 [rootyinzhengjie ~]# mkdir -pv /home/yinzhengjie/data/www/webapps/ROOT mkdir: created direc…

将域名绑定到ip上,并实现访问不同二级子域名对应不同目录

一、将域名绑定到ip上1、环境介绍:阿里云服务器ESC(美国硅谷) 2、购买域名 3、备案 注:由于我买的是美国地区服务器,所以不用备案,如果买的国内服务器,这里需要添加一个备案操作。 4、域名实名认…

ABP vNext微服务架构详细教程(补充篇)——单层模板(中)

框架搭建2聚合服务这里我们将聚合服务命名为Domain.Core和基础服务层一致,我们先通过命令创建单层模板项目Domain.Core,这里我们删除wwwroot、Data、Entities、Localization、ObjectMapping文件夹及其所有子文件,并删除package.json文件和Ser…

谈一谈synchronized关键词

1.使用 java中的每一个对象都可以作为synchronized的锁进行代码同步,常见的形式 同步代码块锁是synchronized括号内的对象普通成员方法上,锁是当前的对象,synchronized(this)静态方法上,锁是当前类的Class对象2. 原理 synchronize…

系统学习redis之二——redis集群搭建

redis单点部署: 安装命令: # cd /usr/local/ # wget http://download.redis.io/releases/redis-4.0.1.tar.gz #下载安装包 # yum -y install gcc psmisc #安装依赖包 # tar xf redis-4.0.1.tar.gz # cd /usr/lo…

业务技术协同线上化的研发管理实战

摘要:2017年1月13日举办的【云栖计算之旅】线下沙龙第4期研发管理专场,阿里巴巴B2B事业群产品专家代平为大家带来了题为业务技术协同线上化的研发管理实战的演讲。本文主要从管理产品研发的理念开始谈起,着重说明了云效指挥部的六大步骤&…

Linux中写脚本,同时去开启我们自己设定的多个服务(含定时脚本实现)

场景介绍: 在Linux中,我们通常开启服务需要使用systemctl start 服务名 命令,这样,如果开启一个服务还好,但是如果同时开启多个服务,难免会感到麻烦,这时,我们可以自定义一个脚本&a…

负载均衡环境搭建实战之nginx和tomcat

Linux基本环境负载均衡的环境需要在linux下搭建完成,所以有一个基础的linux系统是必须的,这里建议大家按照http://edu.51cto.com/course/10209.html中的基础linux环境来安装,这样能少走弯路。JDK安装1、 下载对应版本的Java1.7,a)…

桌面应用如何判断win11操作系统

背景Windows 11 操作系统已经正式发布快有一年了,在 .Net 开发中,我们获取操作系统版本,经常使用 Environment.OSVersion.Version.Major 和 Minor(6.1 Windows 7, 10.0 Windows 10),但是当 Win11 出现以后…