上一篇:git常用命令
nginx基础
891 2019-09-07 2020-06-25
前言:以前都没怎么了解过nginx,这次好好总结一番。
一、常用命令
不像许多其他软件系统,Nginx 仅有几个命令行参数,完全通过配置文件来配置
参数 | 说明 |
---|---|
-c </path/to/config> | 为nginx指定缺省的配置文件 |
-t | 不运行,测试配置文件的正确性 |
-v | 显示nginx版本 |
-V | 显示nginx版本、编译器版本和配置参数 |
-s stop|quit | 向nginx发送信号,分别为强制停止、处理当前请求再停止 |
-s reload|reopen | 不停止服务重新载入配置文件、重新打开日志文件 |
-h或-? | 显示可用选项 |
二、配置文件详解
先以nginx默认配置为例(删除了部分无用注释),如下
# 线程用户
user www-data;
# 让nginx自动设置work进程数,一般为cpu的个数
worker_processes auto;
pid /run/nginx.pid;
# 引入nginx各模块配置文件
include /etc/nginx/modules-enabled/*.conf;
events {
# 单个进程最大连接数,其他配置交给nginx自己选择最优配置
worker_connections 768;
}
http {
# 是否在错误页面实现nginx版本
server_tokens off;
# 优化文件传输
sendfile on;
# 告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送
tcp_nopush on;
# 告诉nginx不要缓存数据,而是一段一段的发送
tcp_nodelay on;
# 连接超时时间,这里单位是秒
keepalive_timeout 65;
# types_hash_max_size越小,消耗的内存就越小,但散列key的冲突率可能上升
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# default_type text/html;
# ssl证书相关,用于开启https
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
# 访问日志,可以设置为off以关闭日志
access_log /var/log/nginx/access.log;
# 错误日志
error_log /var/log/nginx/error.log;
# 启用gzip压缩
gzip on;
# 为指定的客户端禁用gzip功能,这里指定ie6及以下版本
gzip_disable "msie6";
server {
listen 80 default_server;
# 匹配ipv6
listen [::]:80 default_server;
# root配置指令的意思是:当前location所对应的文档根目录是哪里
root /var/www/html;
# 主页面文件
index index.html index.htm index.nginx-debian.html;
# 指定server_name,后面有示例
server_name _;
# 匹配规则
location / {
# 尝试不同的路径,找到一个路径就返回
try_files $uri $uri/ =404;
}
}
}
三、实例演示
server {
listen 80;
root /home/hk/Desktop/nginx/port80;
# 这里一般是你的域名
server_name localhost;
index index.html;
# 注意这里的斜杠
location /81/ {
proxy_pass http://127.0.0.1:81/;
}
# 注意这里没有斜杠
location /82 {
proxy_pass http://127.0.0.1:82;
}
location /upstream/ {
proxy_pass http://test.com;
}
}
server {
listen 81;
root /home/hk/Desktop/nginx/port81;
index index.html;
}
server {
listen 82;
root /home/hk/Desktop/nginx/port82;
location / {
return 200 "this is port 82, proxy path is: $uri";
}
}
server {
listen 83;
root /home/hk/Desktop/nginx/port82;
location / {
set $temp 'tempValue';
return 200 "($temp)this is port 83, proxy path is: $uri";
}
}
#负载均衡配置
upstream test.com {
#upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。
server 127.0.0.1:82 weight=2;
server 127.0.0.1:83 weight=2;
server 127.0.0.1:7070 backup;
server 127.0.0.1:9090 down;
}
核心html文件如下
<html>
<body>
<h1><center>this is port 80 index</center>
<h2><center><a target="_blank" href="/static.html">to static html</a></center></h2>
<h2><center><a target="_blank" href="/404.html">to 404 html</a></center></h2>
<h2><center><a target="_blank" href="/81/">proxy port 81 index</a></center></h2>
<h2><center><a target="_blank" href="/81/static.html">proxy port 81 static</a></center></h2>
<h2><center><a target="_blank" href="/82/path.html">proxy port 82 any path</a></center></h2>
<h2><center><a target="_blank" href="/upstream">test nginx upstream</a></center></h2>
</body>
<html>
nginx太强了,本身就是用C写的,如静态资源处理、连接控制、流量控制、反向代理、负载均衡,每一项都很强大。有需要时再来研究吧。
总访问次数: 452次, 一般般帅 创建于 2019-09-07, 最后更新于 2020-06-25
欢迎关注微信公众号,第一时间掌握最新动态!