常用命令

查看Nginx的版本号:nginx -V

启动Nginx:start nginx

指定配置启动:nginx -c /path/to/nginx.conf

配置文件修改重新加载命令:nginx -s reload

检查默认配置是否正确: nginx -t

检查指定配置: nginx -t -c /path/to/nginx.conf

快速停止或关闭Nginx:nginx -s stop

正常停止或关闭Nginx:nginx -s quit

可以直接杀进程或任务管理器找到 nginx 结束任务

ps:直接解压出来的没加入环境变量,使用 ./nginx 运行

nginx: [emerg] CreateDirectory() “H:\Nginx/temp/client_body_temp” failed (3: The system cannot find the path specified)

nginx.exe 同目录添加 temp 文件夹。

下载

https://nginx.org/  =>  https://nginx.org/en/download.html

完整配置

nginx启动的进程数,通常设置成和cpu的数量相等;可以设置为: auto

worker_processes auto;

errorlog 文件位置, 有debug、info、notice、warn、error、crit几种

error_log logs/error.log notice;

error_log logs/error.log info;
error_log logs/error.log error;

pid文件地址,记录了nginx的pid,方便进程管理

pid logs/nginx.pid;

用来加载其他动态模块的配置

include nginx/modules/*.conf;

工作模式和进程连接数上限

并发总数:worker_processes*worker_connections

events {
# 每个worker_processes的最大并发链接数
worker_connections 1024;
}

与提供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记录访问的用户、页面、浏览器、ip和其他的访问信息
access_log  logs/access.log  main;

# 设置nginx是否使用sendfile函数输出文件
# 一般的网络传输过程
# 硬盘 >> kernel buffer >> user buffer>> kernel socket buffer >>协议栈
# 使用sendfile后
# 硬盘 >> kernel buffer (快速拷贝到kernelsocket buffer) >>协栈议
# 可以显著提高传输性能
sendfile    on;
# 数据包最大时发包(使用Nagle算法)
# tcp_nopush只有在启用了sendfile时才起作用,
# 在启用tcp_nopush后,程序接收到了数据包后不会马上发出,而是等待数据包最大时一次性发出,可以缓解网络拥堵(Nagle化)
tcp_nopush  on;


# 立刻发送数据包(禁用Nagle算法)
# tcp_nodelay   on;

# 链接超时时间
#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;

# 负载均衡:多个后台服务器接口;weight:使用到的比重等级
upstream proxyProject {
    server 127.0.0.1:3330;
    server 127.0.0.1:8080 weight=2;
}

# http服务上支持若干个虚拟主机。
# 每个server对应一个虚拟主机配置项
server {
     listen 80;
    # 修改为自己的域名
    server_name www.myself.com myself.com;
    # 跨域
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET,POST';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    # 301 重定向
    return 301 https://www.myself.com$request_uri;
    # rewrite ^ https://www.myself.com$request_uri? permanent;
}

# HTTPS server
#
server {
   listen       443 ssl;
   server_name  www.myself.com myself.com;
    # 跨域
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET,POST';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    # 证书文件
   ssl_certificate      ../../myself.com/Nginx/1_myself.com_bundle.crt;
   ssl_certificate_key  ../../myself.com/Nginx/2_myself.com.key;

   ssl_session_cache    shared:SSL:1m;
   ssl_session_timeout  5m;

#    ssl_ciphers  HIGH:!aNULL:!MD5;
   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers  on;

     if ($ssl_protocol = "") {
        rewrite ^(.*) https://$host$1 permanent;
    }
    # 根路由,正常访问
   location / {
       root   html;
       index  index.html index.htm;
   }
   # 代理路由,代理访问,多个服务实现负载均衡
    location /proxy {
        proxy_pass http://proxyProject$request_uri;
        proxy_set_header X-Real-IP $remote_addr; 
    }
}

}

最后修改日期: 2022-01-04

作者