Nginx学习笔记(一)

本篇内容:概述,安装,常用命令,配置文件,demo

一、nginx概述

1.1 常用的web服务器

服务器介绍

Web 服务器分为静态服务器和动态服务器,静态服务器就是处理静态资源的,比如 HTML、CSS、JS,常用的静态服务器有 Apache、Nginx;动态服务器就是处理动态请求的,比如 JSP,Servlet 等,常用的有 Tomcat、Weblogic。

Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,能够支持 5 万个并发连接,内存、CPU 消耗非常低,是基于七层协议的服务。

反向代理

正向代理:代理客户端,即代替客户端与服务器进行通信,服务器将不知道真实的客户端是谁,比如翻墙

反向代理:代理服务端,即代替服务器与客户端进行通信,客户端将不知道真实的服务器是哪台,即nginx

1.2 nginx的原生功能

1.http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器

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

3.反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。

4.正向代理

二、安装与基础命令

2.1通过yum安装(含组件)

系统环境:centOS7.7

Nginx版本:nginx-1.14.0.tar.gz和nginx-1.16.1.tar.gz均可使用

1)gcc

用来编译下载下来的nginx源码


yum install gcc-c++

2)pcre和pcre-devel

PCRE是一个prel库,包括perl兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式; pcre-devel是使用pcre开发的一个二次开发库。


yum install -y zlib zlib-devel

3)zlib

zlib提供了很多压缩和解方式,nginx需要zlib对http进行gzip


yum install -y zlib zlib-devel

4)openssl

openssl是一个安全套接字层密码库,nginx要支持https,需要使用openssl


yum install -y openssl openssl-devel

5)下载nginx


wget http://nginx.org/download/nginx-1.14.0.tar.gz

6)解压nginx


tar -zxvf nginx-1.14.0.tar.gz -C  /usr/local

7)cd到文件路径

cd /usr/local/nginx-1.14.0

8)编译nginx

简单版

./configure

复杂版:

./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/tem/nginx/client --http-proxy-temp-path=/var/tem/nginx/proxy --http-fastcgi-temp-path=/var/tem/nginx/fcgi --with-http_stub_status_module

9)安装nginx

make && make install

10)启动nginx

nginx -c /etc/nginx/nginx.conf

问题处理

①如果出现[emerg] getpwnam("nginx") failed 错误 执行

useradd -s /sbin/nologin -M nginx

id nginx

②如果出现 [emerg] mkdir() "/var/temp/nginx/client" failed (2: No such file or directory) 错误 执行

sudo mkdir -p /var/tem/nginx/client

③如果您正在运行防火墙,请运行以下命令以允许HTTP和HTTPS通信:

sudo firewall-cmd --permanent --zone=public --add-service=http

sudo firewall-cmd --permanent --zone=public --add-service=https

sudo firewall-cmd --reload

11)开机自启动

在rc.local增加启动代码即可

vi /etc/rc.local

增加一行

/usr/local/nginx/sbin/nginx

2.2常用命令

cd /usr/local/nginx/  进入nginx的位置

nginx  启动nginx

nginx -s reload 重新加载(一般用于修改配置文件后)

nginx -s quit  此方式停止步骤是待nginx进程处理任务完毕进行停止。

nginx -s stop  此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

2.3卸载nginx

1)停止nginx进程

nginx -s stop

2)查找nginx相关文件

find / -name nginx
查找Nginx相关文件

3)依次删除find查找到的所有目录

比如:

rm -rf /usr/sbin/nginx

4)使用yum清理

yum remove nginx

三、配置文件

3.1最简改配置

仅最简单示范代理springboot项目

springboot项目中推荐做如下配置:

server.port=8081

server.servlet.context-path=/xx

其中server.servlet.context-path属性应每个模块都唯一,以便于nginx做分发

访问地址:http://IP:80/xx/请求地址

nginx配置文件修改部分如下:(配置文件在 /etc/nginx 下)


server {

        listen 80;

        server_name localhost;   

        location / {

                proxy pass http://101.200.147.88:8080;

                #root  html;

    #index  index.html index.htm;

        }

        location /xx {

proxy_pass http://localhost:8081;

}

}

3.2原始配置文件

主要分为三部分

  • 全局块

    设置影响nginx服务器整体运行的配置指令

  • events

    设置网络相关

  • http 块

配置具体关系

  • http全局块

  • server块

汉字均为笔者添加


#user  nobody;      #配置用户或者组

worker_processes  1;    #允许生成的进程数,推荐为cpu总核心数

#全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit(由详细->简略)

#error_log  logs/error.log; 

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid        logs/nginx.pid;  #指定nginx进程运行文件存放地址

#工作模式及连接数上限

events {

    worker_connections  1024; #单个后台 worker process 进程的最大并发链接

数 (最大连接数=连接数*进程数)

}

#设定 http 服务器,利用它的反向代理功能提供负载均衡支持

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;  #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来 输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置 为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常 把这个改成off。

    #tcp_nopush    on;  #防止网络阻塞

    #keepalive_timeout  0;

    keepalive_timeout  65;  #长连接超时时间,单位是秒

    #gzip  on;  #开启gzip压缩输出

    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;

    #    }

    #}

}

四、demo

自己写个springboot,按照前面的配置搞一下就好!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 1. nginx是什么 Nginx是HTTP服务器和反向代理,同时也是一个IMAP/POP3代理服务器。 Ngin...
    captain_fu阅读 489评论 0 0
  • 1.什么是负载均衡?通过某种负载分担技术,将外部发送来的请求按照某种策略分配到服务器集合的某一台服务器上,而接收到...
    少艾_91df阅读 441评论 0 0
  • Nginx Web服务器 主要内容:Nginx高性能Web服务器、Nginx工作原理、安装配置及升级、Nginx配...
    childhood_1013阅读 215评论 0 0
  • 基于《实战Nginx:取代Apache的高性能Web服务器》 2010年版本 第一章 Nginx简介 1.Ngin...
    GunnerAha阅读 1,154评论 2 48
  • Nginx 介绍 Nginx是一款高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代...
    专职跑龙套阅读 255评论 0 0