项目01-nginx模块

1、nginx介绍

nginx是一款高性能web服务器和反向代理服务器,在互联网项目中使用非常频繁,尤其其出色的性能以及轻量级进程占用,已经超过了apache的httpd服务器的使用量。内部可以配置零拷贝实现快速文件传输。

2、openresty

openresty是将nginx现有一些重要插件做了集成,省去安装nginx之后还需要在安装插件的繁琐步骤,内置luajit插件,能解决接受post提交请求、json消息体解析等功能。

3、安装openresty

3.1 windows下安装

下载软件包D:\downloads\openresty-1.13.6.1-win32.zip,解压即可。

3.2 linux下安装

  1. 添加openresty yum源

    创建/etc/yum.repos.d/openresty.repo文件,内容如下:

    [openresty]
    name=Official OpenResty Open Source Repository for CentOS
    baseurl=https://openresty.org/package/centos/$releasever/$basearch
    skip_if_unavailable=False
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://openresty.org/package/pubkey.gpg
    enabled=1
    enabled_metadata=1
  2. 清空yum缓存并重建缓存

    #切换到root账户下操作
    $>su root
    $>yum clean all
    $>yum makecache
  3. 通过yum进行安装

    #搜索openresty软件包
    $>sudo yum cache search openresty
    $>sudo yum install openresty

4、配置反向代理服务器

配置文件为openresty-1.13.6.1-win32\conf\nginx.conf


#user nobody;
worker_processes 1; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; # log_format main escape=json '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'
# '"$request_body"'
# '"$http_client_time"';
log_format main escape=json $remote_addr#$http_client_time#$time_local#$status#$request_body; access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 65; #gzip on;
##############################################################
######## 该部分为反向代理 ###############
##############################################################
upstream servers{
server s101:80 weight=1;
server s102:80 weight=1;
} map $http_x_forwarded_for $clientRealIp {
~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr;
} server {
listen 80;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main;
#
underscores_in_headers on; location / {
#root html;
#index index.html index.htm;
error_page 405 =200 $1;
lua_need_request_body on;
content_by_lua 'local s = ngx.var.request_body'; proxy_pass http://servers;
proxy_set_header Host $host;
proxy_set_header remove_user_ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} #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;
# }
#}
}

5、配置centos上的nginx web服务器

/etc/nginx/nginx.conf

#user  nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream; log_format main escape=json $msec#$time_local#$clientRealIp#$http_client_time#$status#$request_body;
access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 65; #gzip on; map $http_x_forwarded_for $clientRealIp {
~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr;
} server {
listen 8888;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main;
underscores_in_headers on; location / {
root html;
index index.html index.htm;
error_page 405 =200 $1;
lua_need_request_body on;
content_by_lua 'local s = ngx.var.request_body';
} #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;
#}
}
}

6、nginx管理命令

6.1 启动openresty

$>su root				#切换到root账户
$>openresty #启动命令

6.2 停止命令

$>su root
$>openresty -s stop #停止命令

6.3 重新加载配置文件

$>su root
$>openresty -s reload #重新加载

6.4 检查配置文件正确性

$>su root
$>openresty -t #检查文件

6.5 查看帮助

#查看帮助
$>sudo openresty -h
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives] Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/local/openresty/nginx/)
-c filename : set configuration file (default: conf/nginx.conf)
-g directives : set global directives out of configuration file $>sudo openresty -s reload | stop | quit |reopen
$>sudo openresty -t

7、注意事项

7.1 关闭centos的防火墙与开启自启

$>sudo service firewalld status		#查看防火墙
$>sudo service firewalld start #启动防火墙
$>sudo service firewalld stop #停止后防火墙 $>sudo chkconfig firewalld off #关闭开机自启
$>sudo chkconfig firewalld on #启动开机自启
$>sudo chkconfig #查看开机自启项列表

7.2 不要使用浏览器访问nginx

我们配置的nginx服务器接受post方式访问,浏览器是get方式,因此无法访问nginx服务器,可以在chrome中安装poster插件实现发送post请求。

项目01-nginx模块的更多相关文章

  1. day64:nginx模块之限制连接&状态监控&Location/用nginx+php跑项目/扩展应用节点

    目录 1.nginx模块:限制连接 limit_conn 2.nginx模块:状态监控 stub_status 3.nginx模块:Location 4.用nginx+php跑wordpress项目 ...

  2. Nginx模块fastcgi_cache的几个注意点 转

    Nginx模块fastcgi_cache的几个注意点   去年年底,我对nginx的fastcgi_cache进行摸索使用.在我的测试过程中,发现一些wiki以及网络上没被提到的注意点,这里分享一下. ...

  3. 开发Nginx模块

    开发Nginx模块 前面的哪些话 关于Nginx模块开发的博客资料,网上很多,很多.但是,每篇博客都只提要点,无法"step by step"照着做,对于初次接触Nginx开发的同 ...

  4. Nginx模块

    模块概述 https://kb.cnblogs.com/page/98352/ Nginx模块工作原理概述 (Nginx本身支持多种模块,如HTTP模块.EVENT模块和MAIL模块,本文只讨论HTT ...

  5. 若依项目利用nginx实现负载均衡及保持会话

    记录一下若依项目利用nginx实现负载均衡及保持会话的步骤. 此次作为试验性的测试,为了方便在本地window的环境上实现. 具体步骤: 1.安装两个tomcat8,可以下载一个后,另一个复制即可,下 ...

  6. nginx源代码分析--nginx模块解析

    nginx的模块很之多.能够觉得全部代码都是以模块的形式组织.这包含核心模块和功能模块,针对不同的应用场合.并不是全部的功能模块都要被用到,附录A给出的是默认configure(即简单的httpser ...

  7. 通过apache,和nginx模块去除html中的空格和tab

    最近一个项目中,合作方要求去除html中的空格,不想改代码,所以百度了一下通过apache,和nginx模块去除html中的空格和tab的方案,下面记录下来: 一.nginx nginx可以通过mod ...

  8. OpenResty / Nginx模块,Lua库和相关资源的列表

    OpenResty / Nginx模块,Lua库和相关资源的列表 什么是OpenResty OpenResty是一个成熟的网络平台,它集成了标准的Nginx核心,LuaJIT,许多精心编写的Lua库, ...

  9. 手把手教你开发Nginx模块

    前面的哪些话 关于Nginx模块开发的博客资料,网上很多,很多.但是,每篇博客都只提要点,无法"step by step"照着做,对于初次接触Nginx开发的同学,只能像只盲目的蚂 ...

  10. day08 Nginx模块

    day08 Nginx模块 lnmp架构 l :Linux n :Nginx m :MySQL p :Python/PHP lnmp架构:是最简单的架构 Nginx中的模块(Python模块):前提是 ...

随机推荐

  1. react 中文文档案例三 (开关按钮)

    开关按钮制作   import React from 'react'; import ReactDOM from 'react-dom'; class Toggle extends React.Com ...

  2. 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_基元类型(一)

    [概念] 编译器直接支持的数据类型 [C#基元类型与对应的 FCL 类型] C#基元类型 FCL 类型 说明 sbyte System.Sbyte 有符号8位值 byte System.Byte 无符 ...

  3. 关于Django中路由层(URL-conf)

    关于路由层 路由层其实就是项目中urls.py那个文件,那里面存放着url和视图函数的对应关系它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来 ...

  4. IKVM:java代码c#调用

    在工作中遇到对接java接口,涉及到java加密或签名问题,.net无法实.就将java代码编辑为dll给.net调用 注:这里只做简单java代码处理,不涉及到复杂的java包 java文件处理: ...

  5. HttpClient,Socket,URL知识

    java中: tip/ip  , udp  传输协议 网络编程有三大类:Socket,URL,datagram HTTP协议是建立在TCP协议之上的一种应用. 一:HttpClient HttpCli ...

  6. Ancoda 下的python多版本共存

    Ancoda 下的python多版本共存 virtualenv python 多版本共存 Pip, Virtualenv 和Fabric 被称为python 的三大神器,Pip 是包管理工具,Virt ...

  7. Java类名 方法名 常量 变量的命名习惯

    1.包 用于将完成不同功能的类分门别类,放在不同的目录(包)下,包的命名规则:将公司域名反转作为包名,对于包名,每个字母都需要小写. 如果定义类的时候没有使用package(包),那么java就认为我 ...

  8. ETL的两种架构(ETL架构和ELT架构)

     ETL ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的过程.ETL一词 ...

  9. sudo 命令问题详解(一)

    普通用户不能使用sudo命令的解决办法  https://www.cnblogs.com/fasthorse/p/5949946.html 解决sudo: sorry, you must have a ...

  10. java将pdf转成base64字符串及将base64字符串反转pdf

    package cn.wonders.utils; import java.io.BufferedInputStream;import java.io.BufferedOutputStream;imp ...