首页 > 系统相关 >nginx使用小记

nginx使用小记

时间:2023-01-02 17:34:24浏览次数:66  
标签:set http log server nginx proxy 使用 小记

中文wiki社区:http://wiki.codemongers.com/NginxChs

一 . nginx安装

1. 下载nginx : http://sysoev.ru/nginx/download.html(官方下载页面)
wget http://sysoev.ru/nginx/nginx-0.7.19.tar.gz

2. 依赖模块下载
gzip 模块需要 zlib 库  (http://www.zlib.net/)
rewrite 模块需要 pcre 库  (http://www.pcre.org/)
ssl 功能需要 openssl 库 (http://www.openssl.org/)

./configure --prefix=/home/ljh/program/nginx --with-http_stub_status_module --with-pcre=./external/pcre-7.8 --with-zlib=./external/zlib-1.2.3 --with-openssl=./external/openssl-0.9.8i

make & make install

通过信号对 Nginx 进行控制

Nginx 支持下表中的信号:

信号名  作用描述  
TERM, INT  快速关闭程序,中止当前正在处理的请求  
QUIT  处理完当前请求后,关闭程序  
HUP  重新加载配置,并开启新的工作进程,关闭就的进程,此操作不会中断请求  
USR1  重新打开日志文件,用于切换日志,例如每天生成一个新的日志文件  
USR2  平滑升级可执行程序  
WINCH  从容关闭工作进程 

有两种方式来通过这些信号去控制 Nginx,第一是通过 logs 目录下的 nginx.pid 查看当前运行的 Nginx 的进程 ID,
通过 kill – XXX <pid> 来控制 Nginx,其中 XXX 就是上表中列出的信号名。如果您的系统中只有一个 Nginx 进程,那您也可以通过 killall 命令来完成,例如运行 killall – s HUP nginx 来让 Nginx 重新加载配置。

killall -s HUP nginx

二  nginx 配置

1. 监控配置

location /nginx_status {
# copied from http://blog.kovyrin.net/2006/04/29/monitoring-nginx-with-rrdtool/
stub_status on;
access_log off;
allow SOME.IP.ADD.RESS;
deny all;
}

页面结果解释:
Active connections: 291
server accepts handled requests
 16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
active connections -- 对后端发起的活动连接数

server accepts handled requests -- nginx 总共处理了 16630948 个连接, 成功创建 16630948 次握手 (证明中间没有失败的), 总共处理了 31070465 个请求 (平均每次握手处理了 1.8个数据请求) 
reading -- nginx 读取到客户端的Header信息数 
writing -- nginx 返回给客户端的Header信息数 
waiting -- 开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是Nginx说已经处理完正在等候下一次请求指令的驻留连接

2. 页面缓存配置  http://wiki.codemongers.com/NginxChsMemcachedModule

server {
location / {
set $memcached_key $uri;
memcached_pass name:11211;
default_type text/html;
error_page 404 = /fallback;
} location = /fallback {
proxy_pass backend;
}

3. 页面配置IP访问列表   http://wiki.codemongers.com/NginxHttpAccessModule

location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
deny all;
}

4. 配置页面访问控制

location  /  {                          
auth_basic "Restricted";
} auth_basic_user_file conf/htpasswd;


htpasswd格式为 用户名:密码。你可以使用来自 Apache 的 htpasswd 工具来创建密码文件。

 

5. 限制每个IP的并发数  http://wiki.codemongers.com/NginxChsHttpLimit_zoneModule

limit_zone   one  $binary_remote_addr  10m;
server {
location /download/ {
limit_conn one 1;
}
}


定义一个叫“one”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话)。 限制 /download/ 目录下,一个会话只能进行一个连接。 
简单点,就是限制 /download/ 目录下,一个IP只能发起一个连接,多过一个,一律503

6. 代理模块   http://wiki.codemongers.com/NginxChsHttpProxyModule

location / {
proxy_pass http://localhost:8000/hello;
proxy_redirect http:/localhost:8000/hello/ /; proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 60
proxy_connect_timeout 60
}

配置项介绍:

daemon on | off   缺省值: on  
可以在开发时开启,但必须在真实环境中设置为off

debug_points [stop | abort]  缺省值: none 
可以在debugger上停止nginx应用

error_log file [ debug | info | notice | warn | error | crit ]      缺省值: ${prefix}/logs/error.log

include vhosts/*.conf;    缺省值: none 
如果配置文件很长,你可以在任意地方使用include指令实现配置文件的包含。*.conf匹配所有以.conf结尾的文件

lock_file  /var/log/lock_file;
nginx采用以异步互斥进行访问控制

master_process on | off     缺省值: on 
和dameon on 都是在开发时使用

pid /var/log/nginx.pid;
进程id存储文件。可以使用 kill -HUP cat /var/log/nginx.pid\ 对Nginx进行配置文件重新加载。

user user [group] 
指定Nginx Worker进程运行用户,默认是nobody帐号。

worker_processes number 缺省值: 1 
配置工作进程。max_clients = worker_processes * worker_connections

worker_priority [-]number 
设置工作进程的优先级

worker_cpu_affinity 0001 0010 0100 1000;
绑定worker进行到四个CPU

worker_rlimit_core size 
指定每个进程的文件限制

access_log path [format [buffer=size]] | off    默认值: access_log log/access.log combined 
指令 access_log 指派路径、格式和缓存大小。参数 "off" 将清除当前级别的所有 access_log 指令。如果未指定格式,则使用预置的 "combined" 格式。缓存不能大于能写入磁盘的文件的最大大小。在 FreeBSD 3.0-6.0 ,缓存大小无此限制。

log_format name format [format ...]  默认值: log_format combined "..." 
log_format  combined  '$remote_addr - $remote_user [$time_local] '
            '"$request" $status $apache_bytes_sent '
                      '"$http_referer" "$http_user_agent"';

 

expires [time|epoch|max|off] 默认值: expires off 
使用本指令可以控制HTTP应答中的“Expires”和“Cache-Control”的头标,(起到控制页面缓存的作用)。 
可以在time值中使用正数或负数。“Expires”头标的值将通过当前系统时间加上您设定的 time 值来获得。 
epoch 指定“Expires”的值为 1 January, 1970, 00:00:01 GMT。 
max 指定“Expires”的值为 31 December 2037 23:59:59 GMT,“Cache-Control”的值为10年。 
“Cache-Control”头标的值由您指定的时间来决定: 
负数:Cache-Control: no-cache 
正数或零:Cache-Control: max-age = #, # 为您指定时间的秒数。 
"off" 表示不修改“Expires”和“Cache-Control”的值

​http://www.blogjava.net/agapple/archive/2008/11/07/239327.html​

搭建本地NGINX测试环境,通过DEBUG测试后台接口

1.在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;#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;#keepalive_timeout 0;
keepalive_timeout 65;#gzip on;
upstream cockpit_server {
server 127.0.0.1:9090; #调用localhost:9090端口,需将后台服务器也启动在此端口下
}#调用不同应用是的ip和端口
upstream prometheus_server {
server 10.138.40.222:8000;
}

upstream monitor_server {
server 10.135.12.226:8099;
}upstream appmng_server {
server 10.138.25.181:8095;
}upstream usermng_server {
server 10.135.12.226:8090;
}

upstream me_server {
server 10.138.16.194:13902;
}server {
listen 80;
server_name cockpit.local.test.c.haier.net; #访问前段网页的域名,需在host文件中讲该域名与ip进行绑定
root E:\\servertest\\dist; # console-ui хпои #指定打包后的前段代码的位置# individual nginx logs for this web vhost
#access_log /tmp/logs/paas-console-access.log;
#error_log /tmp/logs/paas-console-error.log;

location / {
try_files $uri /index.html;
index index.html index.html;
}
location /api {
proxy_pass http://cockpit_server; #指定调用的后台服务器,在上述upstream中定义的
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}location /prometheus {
rewrite ^/prometheus(.+) /api/$1 break;
proxy_pass http://prometheus_server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}

location /monitor {
rewrite ^/monitor(.+) /api/$1 break;
proxy_pass http://monitor_server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}

location /appmng {
rewrite ^/appmng(.+) /api/$1 break;
proxy_pass http://appmng_server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}location /usermng {
rewrite ^/usermng(.+) /api/$1 break;
proxy_pass http://usermng_server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}

location /me {
rewrite ^/me(.+) /api/$1 break;
proxy_pass http://me_server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}#static files
location ~* ^.*\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
expires 30d;
}
}}

2.启动后台服务器,在浏览器中访问设置的域名,在浏览器中的发送的请求会调用后台服务器的接口,可以启用debug进行后台代码的调试。

标签:set,http,log,server,nginx,proxy,使用,小记
From: https://blog.51cto.com/u_15147537/5983875

相关文章

  • JAVA定时调度框架Quartz使用案例
    背景:             近期项目中遇到跨区调拨商品的需求,比如A区和B区,需要判断A区或者B区某种sku是否需要从对方库调拨商品来补充货源,避免因缺失商品而出现订单......
  • 04使用Pinia实现Vuex项目全球化
    在上一章中使用的Vuex作为状态管理实现的全球化,这篇文章使用Pinia作为状态管理。现有用户可能对Vuex更熟悉,它是Vue之前的官方状态管理库。由于Pinia在生态系统中能......
  • 第十三章《集合》第6节:使用Collections类操作集合
    ​Java提供了一个操作集合的工具类Collections,这个类中提供了大量方法对集合元素进行排序、查询和修改等操作,此外还提供了将集合对象设置为不可变、对集合对象实现同步控制......
  • rtthread适配及使用serial_v2的问题
    rtthread适配及使用serial_v2的问题主控芯片:STM32F407ZG1.适配问题本项目工程一开始使用的主控是STM32L496,正常移植使用serial_v2没有问题。将工程复制下来后使用rtthr......
  • Win10使用SSH反向隧道(端口转发)连接远程桌面
    应用场景:如果你有Linux云主机(腾讯、华为等),且公司有一台只有内网IP(或动态IP)的Win10工作机;你计划在家里工作时,通过家里的电脑连接公司的工作机(且不想使用类似Teamvi......
  • 使用awk和grep做简单的统计
    grep或egrep或awk过滤两个或多个关键词: grep-E‘123|abc’filename//找出文件(filename)中包含123或者包含abc的行 egrep‘123|abc’filename//用egrep同样可......
  • tclap库的使用
    这是一个C++命令行解析库,通过使用tclap库,可以自定义命令行参数,最终运行程序时解析出来。下载地址:https://tclap.sourceforge.net/文档地址:https://tclap.sourceforge......
  • Apache和Nginx设置伪静态(URL Rewrite)的方法
    在Apache中有两种方法配置,一是通过httpd.conf文件,二是通过.htaccess文件。 使用httpd.conf来配置rewrite策略。 要使用httpd.conf文件来设置伪静态策略,我们可以......
  • Mysql常见注意事项小记
    Mysql常见注意事项小记1.排序问题正常如果按照某字段升序排列,空值会排到有值的前面;如果逆序排序空值排在最后。有时候我们需要该字段为空的行数据要排到最......
  • 使用Apache Tiles3.x构建界面布局
     Tiles是一个免费的开源模板Java应用程序的框架。基于复合模式简化的用户界面的构建。对于复杂的网站仍是最简单、最优雅的方式与任何MVC技术一起工作。Struts2对Tiles提......