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

进大厂! 欢迎关注微信公众号,第一时间掌握最新动态!