文章目录

  • Nginx主配置文件调优
  • Nginx HTTP跳转HTTPS
  • Nginx代理PHP服务
  • Nginx作为代理服务器
  • Nginx作为负载均衡服务器
  • Nginx作为静态文件服务器
  • Nginx反向代理WebSocket服务
  • Nginx反向代理示例
  • Nginx 子路由部署 Recat 项目
  • Nginx 开启gzip压缩
  • Nginx 跨域问题解决
  • Nginx配置IP黑/白名单
  • Nginx配置SSL证书
  • Nginx配置动静分离
  • Nginx 隐性跳转(浏览器保留旧URL)

Nginx主配置文件调优

# 启动用户改为 root,避免权限问题报错。
user  root;
# 定义了 nginx 在为你的网站提供服务时,worker 进程的数量。工作进程一般设置为 CPU 的线程数,这里设置成 auto,nginx 会自动获取 CPU 线程数,并启用相对应的 worker 进程。
worker_processes  auto;
# 配置 nginx worker 进程最大打开文件数
worker_rlimit_nofile 65535;
# nginx 的错误日志路径,warn 表示只打印打印 warn 级别以上的日志。
error_log  /var/log/nginx/error.log warn;
# nginx 的 pid 文件路径
pid        /var/run/nginx.pid;# 并发优化
events {# 设置了一个 worker 进程可以同时打开的链接数。如:现有4个 worker 进程,则当前 nginx 服务器的同时打开链接数为 4*1024=4096 个。需根据当前服务器的 open files 值设定,使用 ulimit -a 查看当前服务器的 open files 值。worker_connections  65535;# 让nginx收到一个新连接通知后接受尽可能多的连接。multi_accept   on;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;# 定义一个 main 的日志格式log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# http 服务的访问日志路径,日志格式为 main 定义的格式access_log  /var/log/nginx/access.log  main;# 指向 sendfile()函数。sendfile() 在磁盘和 TCP 端口(或者任意两个文件描述符)之间复制数据。sendfile    on;# 配置 nginx 在一个包中发送全部的头文件,而不是一个一个发送。tcp_nopush  on;# 配置 nginx 不要缓存数据,应该快速的发送小数据(这仅仅应该用于频繁发送小的碎片信息而无需立刻获取响应的,需要实时传递数据的应用中)。tcp_nodelay on;# 指定了与客户端的 keep-alive 链接的超时时间。服务器会在这个时间后关闭链接。我们可以降低这个值,以避免让 worker 过长时间的忙碌。keepalive_timeout  60s;# 限制客户端文件上传下载大小限制,默认1mclient_max_body_size 20m;# 读取请求头的超时时间client_header_timeout 60s;# 读取请求实体的超时时间client_body_timeout 60s;# 开启 gzip 压缩模块gzip on;# 设置用于压缩响应的缓冲区的数量和大小gzip_buffers 16 8k;# 设置 gzip 压缩级别,值在 1 到 9 之间(值越大,压缩级别越高)gzip_comp_level 6;# IE 浏览器不开启 gzip,IE6 以下会乱码gzip_disable 'MSIE [1-6].';# 设置压缩所需的最小 HTTP 版本gzip_http_version 1.0;# 设置将被压缩的返回值的最小长度gzip_min_length 1k;# 需要压缩的文件的格式gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png image/tiff image/x-ms-bmp;gzip_vary off;# fastcgi 调优参数fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;# 关闭页面中的 nginx 版本数字信息,提高安全性。server_tokens   off;# nginx 的 http 块配置文件,可将块配置文件放入该目录。include /etc/nginx/conf.d/*.conf;server {listen 80;server_name www.ppxxxo.com;# http 跳转 httpsrewrite ^(.*) https://$server_name$1 permanent;}server {listen       443 ssl;server_name  www.ppxxxo.com;ssl_certificate      ssl/ppxxxo.com.pem;ssl_certificate_key  ssl/ppxxxo.com.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;access_log  /var/log/nginx/www.ppxxxo.com_access.log  main;error_log  /var/log/nginx/www.ppxxxo.com_error.log warn;# 静态文件location / {root /usr/share/nginx/html;index index.html;}location /anan/ {alias /usr/share/nginx/html/anan/;index index.html;}# 动态请求location /base/ {proxy_redirect off;proxy_set_header    Host spa.asxxxr.net;proxy_set_header    X-Real-IP $remote_addr;proxy_set_header    X-Forwarded-For $remote_addr;proxy_pass http://39.103.221.4:50006/;}# 缓存常见格式的图片location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|svg|webm)$ {# 单位参数:d 天 | H 小时 | M 分expires 1h;}}
}

Nginx HTTP跳转HTTPS

server {listen 80;server_name admin.alxxj.cn;rewrite ^(.*) https://$server_name$1 permanent;
}

Nginx代理PHP服务

server {listen               443 ssl;server_name          admin.alxxj.cn;ssl_certificate      /etc/nginx/conf.d/ssl/admin.alxxj.cn.pem;ssl_certificate_key  /etc/nginx/conf.d/ssl/admin.alxxj.cn.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_protocols        TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers          HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;index index.html index.php;root /var/www/html/alice/admin/web;rewrite (\/\.svn|.git\/) /404/;if ($http_user_agent ~* yahoo|bingbot) {return 403;}if ($query_string ~* ".*(insert|select|delete|update|count|master|truncate|declare|'|%27|%22|%3C|%3E|;|%20and%20|%20or%20).*"){return 404;}location / {try_files $uri $uri/ /index.php$is_args$args;}location ~ .*\.(php|php5)?${fastcgi_pass  127.0.0.1:9000;fastcgi_param ENV 'prod';fastcgi_index index.php;include fastcgi.conf;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ .*\.(js|css)?${expires 1h;}#日志access_log  off;
}

Nginx作为代理服务器

Nginx 是一个优秀的高性能代理服务器,可以通过不同的配置进行反向代理、正向代理。

正向代理
正向代理的代理对象是客户端。正向代理就是nginx服务器替客户端去访问目标服务器。

server{resolver 8.8.8.8;listen 80;location / {proxy_pass http://$http_host$request_uri;}
}

在客户端配置 http_proxy 环境变量,export http_proxy=http://你的正向代理服务器地址:代理端口,即可使用代理服务器上网。

通过这种方式访问网站,例如百度。百度那边只能看到nginx服务器的IP,而获取不到你的真实IP。

反向代理
客户端不需要了解nginx服务器后面的服务,直接访问nginx提供的地址。

server {listen       80;server_name  nginx1.com;location / {proxy_set_header  Host nginx1.com;proxy_redirect off;proxy_set_header  X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;proxy_pass https://www.baidu.com/;}
}server {listen       80;server_name  nginx2.com;location / {proxy_set_header  Host nginx2.com;proxy_redirect off;proxy_set_header  X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;proxy_pass https://www.sina.com.cn/;}
}

访问:http://nginx1.com/,出现百度的页面。

访问:http://nginx2.com/,出现新浪的页面。

Nginx作为负载均衡服务器

可以将 nginx 作为一个非常高效的 HTTP 负载均衡器,将流量分配到多个应用服务器上,并通过 nginx 提高 Web 应用的性能、可扩展性和可靠性。

nginx 可以通过添加一个 upstream,来实现 nginx 的负载均衡功能。

upstream myserver {server 192.168.1.201;server 192.168.1.202;}
server {listen    80;location / {proxy_pass http://myserver;}}

通过这样配置,可以通过访问 nginx 服务器的地址,实现轮询(默认)访问它反向代理的两个后端服务

参数 描述
backup 将服务器标记为备份服务器。当主服务器不可用时,将使用该服务器。
down 将服务器标记为永久不可用
fail_timeout=time 在指定次数的不成功尝试与服务器通信的时间范围内,应考虑服务器不可用
max_conns=number 限制代理服务器的同时活动连接的最大数量。默认值为零,表示没有限制
max_fails=number 设置与服务器通信失败的最大尝试次数
weight=number 设置服务器的权重,默认情况下为1

可通过设置权重 weight 来达到性能好的服务器提供更多次的服务目的。如下:201这台服务器提供的访问量就是202服务器的2倍。


upstream myserver {server 192.168.1.201 weight=2;server 192.168.1.202 weight=1;}
server {listen    80;location / {proxy_pass http://myserver;}}

几种常见的策略:

  • 轮询(默认),请求过来后,Nginx 随机分配流量到任一服务器
upstream backend {server 127.0.0.1:3000;server 127.0.0.1:3001;
}
  • weight=number 设置服务器的权重,默认为1,权重大的会被优先分配
upstream backend {server 127.0.0.1:3000 weight=2;server 127.0.0.1:3001 weight=1;
}
  • backup 标记为备份服务器。当主服务器不可用时,将传递与备份服务器的连接
upstream backend {server 127.0.0.1:3000 backup;server 127.0.0.1:3001;
}
  • ip_hash 保持会话,保证同一客户端始终访问一台服务器
upstream backend {ip_hash; server 127.0.0.1:3000 backup;server 127.0.0.1:3001;
}
  • least_conn 优先分配最少连接数的服务器,避免服务器超载请求过多
upstream backend {least_conn;server 127.0.0.1:3000;server 127.0.0.1:3001;
}

Nginx作为静态文件服务器

Nginx 服务器的一个主要任务是提供静态HTML页面、图像或文件访问。

根据请求的不同,文件将从不同的本地目录提供。

/http/www 包含HTML文件
/http/data1/images 包含图像
/http/data2/file 包含文件
目录树:

http/
├── data1
│   └── images
│       ├── 1.jpg
│       └── 2.jpg
├── data2
│   └── file
│       ├── 1.txt
│       └── 1.zip
└── www├── 50x.html└── index.html

配置文件:

server {listen       80;server_name  127.0.0.1;location / {root   /http/www;index  index.html index.htm;}location /data1/ {root   /http;}location /data2/ {root   /http;}error_page   500 502 503 504  /50x.html;location = /50x.html {root  /http/www;}
}

可以访问一下链接查看效果:

HTML静态文件:http://192.168.1.200/

图像浏览:http://192.168.1.200/data1/images/1.jpg

文件下载:http://192.168.1.200/data2/file/1.zip

Nginx反向代理WebSocket服务


server {listen       443 ssl;server_name  devskt.asxxxd.com;ssl_certificate      3986794_devskt.asxxxd.com.pem;ssl_certificate_key  3986794_devskt.asxxxd.com.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location / {proxy_pass http://172.26.155.95:31114;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}
}

Nginx反向代理示例

# http重写方式 一
server {listen       80;server_name  www.xxx.com;rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https}# http重写方式 二
server {listen       80 default_server;listen       [::]:80 default_server;server_name  spa.asxxxor.net;root         /usr/share/nginx/html;if ($host = "spa.asdoctor.net") {rewrite ^/(.*)$ https://spa.asxxxor.net permanent;}if ($host = "http://spa.asdoctor.net") {rewrite ^/(.*)$ https://spa.asxxxor.net permanent;}if ($host = "https://spa.asdoctor.net") {rewrite ^/(.*)$ https://spa.asxxxor.net permanent;}location / {}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}
}
# 代理https
server {listen       443 ssl;server_name  spa.asxxxor.net;ssl_certificate      /etc/letsencrypt/live/spa.asxxxor.net/fullchain.pem;ssl_certificate_key  /etc/letsencrypt/live/spa.asxxxor.net/privkey.pem;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location / {proxy_set_header  Host spa.asxxxor.net;proxy_redirect off;proxy_set_header  X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;proxy_pass http://172.29.117.155:50099/;}
}

Nginx 子路由部署 Recat 项目


location ^~ /anan/ {# 项目地址alias /usr/local/nginx/html/anan/;# 解决刷新报 404try_files $uri $uri/ /anan/index.html;index index.html;access_log  /home/log/nginx/access/www.anan.com.log main;error_log   /home/log/nginx/www.anan.com.log warn;
}

Nginx 开启gzip压缩

gzip on;                # 开启Gzip
gzip_min_length  1k;    # 不压缩临界值,大于1K的才压缩,一般不用改
gzip_buffers     4 16k; # 设置用于处理请求压缩的缓冲区数量和大小。
gzip_http_version 1.0;  # 用于识别http协议的版本,早期的浏览器不支持gzip压缩,用户会看到乱码,所以为了支持前期版本加了此选项。
gzip_comp_level 6;      # 设置gzip压缩级别,级别越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大
# 设置需要压缩的MIME类型,如果不在设置类型范围内的请求不进行压缩
gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;           # 增加响应头”Vary: Accept-Encoding”

Nginx 跨域问题解决

location / { add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';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';if ($request_method = 'OPTIONS') {return 204;}
}

Access-Control-Allow-Origin

服务器默认是不被允许跨域的。给Nginx服务器配置Access-Control-Allow-Origin *后,表示服务器可以接受所有的请求源(Origin),即接受所有跨域的请求。

Access-Control-Allow-Headers

是为了防止出现以下错误:Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.

这个错误表示当前请求Content-Type的值不被支持。其实是我们发起了"application/json"的类型请求导致的。这里涉及到一个概念:预检请求(preflight request),请看下面"预检请求"的介绍。

Access-Control-Allow-Methods

是为了防止出现以下错误:Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.

给OPTIONS添加204的返回

是为了处理在发送POST请求时Nginx依然拒绝访问的错误,发送"预检请求"时,需要用到方法 OPTIONS ,所以服务器需要允许该方法。

Nginx配置IP黑/白名单

IP访问控制可以加在 nginx 的任意一个块中。如:http、 server、 location。例如我们直接将以下配置加在 http 块中,这样整个 nginx 的服务会受到影响。

deny 192.168.1.66;
allow 192.168.1.0/24;
allow 10.1.20.6/16;
allow 34.26.157.0/24;
deny all;

以上配置实现的效果:

允许 192.168.1.0 该网段,除 192.168.1.66 这个IP都可访问nginx。
允许 10.1.20.6/16 该网段的IP访问。
允许 34.26.157.0/24 该网段的IP访问。
除上面指定的IP范围,其他IP禁止访问。

Nginx配置SSL证书

要设置一个HTTPS服务器,在nginx.conf文件中,在服务器块的listen指令中加入ssl参数,然后指定服务器证书和私钥文件的位置。

server {listen       443 ssl;server_name  api.pxxxo.com;ssl_certificate      /etc/letsencrypt/live/api.pxxxo.com/fullchain.pem;ssl_certificate_key  /etc/letsencrypt/live/api.pxxxo.com/privkey.pem;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location / {root   /usr/share/nginx/html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}
}

ssl_protocols 和 ssl_ciphers 指令可以用来要求客户端在建立连接时只使用SSL/TLS的强版本和密码。

会话存储在工作进程之间共享的SSL会话缓存中,并由ssl_session_cache指令配置。一兆字节的缓存包含大约4000个会话。缓存的默认超时时间是5分钟,这个超时时间可以使用ssl_session_cache指令增加。这个超时时间可以使用ssl_session_timeout指令来增加。

上面是一个为多核系统优化的配置示例,它有1兆字节的共享会话缓存。

Nginx配置动静分离

动静分离的原理:nginx 将客户端发来的请求分为动态请求(php,jsp,cgi)与静态请求(html,css,js和图片资源),转发给不同的服务器。有负责动态处理的tomcat服务器,也有只负责静态文件存储的服务器。

# 动态页面交给http://myserver
location ~ .*\.(php|jsp|cgi)?$
{proxy_pass http://tdt_wugk;
}
# 配置Nginx动静分离,定义的静态页面直接从Nginx发布目录读取。
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{root /data/www/file;
# expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
expires      3d;
}

Nginx 隐性跳转(浏览器保留旧URL)

将 https://sales.bxxxd.cn 隐式转发到 https://sales.oxxxd.com

server {listen       80;listen       443 ssl;server_name  sales.bxxxd.cn;access_log  /usr/local/nginx/logs/sales.bxxxd.cn-access.log main;error_log  /usr/local/nginx/logs/sales.bxxxd.cn--error.log;ssl_certificate      /usr/local/nginx/conf/SSL/scs1665543427707_sales.bxxxd.cn_server.crt;ssl_certificate_key  /usr/local/nginx/conf/SSL/scs1665543427707_sales.bxxxd.cn_server.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location ~* / {proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass https://sales.oxxxd.com;}
}
server {listen       443 ssl;server_name  xt.pxxxo.com;ssl_certificate      ssl/pxxxo.com.pem;ssl_certificate_key  ssl/pxxxo.com.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;access_log  logs/access_xt.log  main;error_log logs/error_xt.log error;location / {rewrite  ^.+apis/?(.*)$ /$1 break;proxy_pass https://data.chxxxxc.org/;}
}

Nginx 配置示例相关推荐

  1. Nginx配置示例文件

    Nginx配置示例文件 nginx.conf worker_processes 8;events {worker_connections 1024; }http {include mime.types ...

  2. nginx 配置示例_Nginx位置指令示例

    nginx 配置示例 The location directive within NGINX server block allows to route request to correct locat ...

  3. Nginx配置单项SSL以及双向SSL

    Https安全协议的由来? 在实现 HTTPS协议前,我们需要了解 SSL 协议,但其实我们现在使用的更多的是 TLS 加密通讯协议. 那么TLS是怎么保证明文消息被加密的呢?在OSI七层模型中,应用 ...

  4. Nginx 配置一个域名使用HTTPS 后其它域名访问HTTPS时也会跳转到该站点解决

    nginx 同一个IP上配置多个HTTPS主机 Nginx 配置一个域名使用HTTPS 后其它域名访问HTTPS时也会跳转到该站点 对于https的域名在同一个IP上如何同时存在多个虚拟主机呢? 遂, ...

  5. Nginx跨域解决配置示例

    简介 在日常学习和工作开发中,需要请求两个不同配置的请求经常存在,本文介绍如果还使用Nginx配置解决其跨域问题 相关理论 首先需要了解什么是跨域,下面的两个文章说的很好,请仔细阅读后,然后自己去动手 ...

  6. ssms没有弹出服务器验证_Nginx服务器负载均衡及生成ssl密钥对、Nginx配置ssl操作示例...

    概述 当用户访问nginx定制好的域名时,nginx通过转发到几台真实的站点,通过upstream实现 [root@centos7 vhost]# vim /usr/local/nginx/conf/ ...

  7. Nginx配置详解与示例

    Nginx配置详解 #定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_processes 8;#全局错误日志定义类型,[ ...

  8. Nginx 配置清单(一篇够用)

    欢迎关注方志朋的博客,回复"666"获面试宝典 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务,其因丰富的功能集 ...

  9. 你应该知道的 Nginx 配置清单

    Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务,其因丰富的功能集.稳定性.示例配置文件和低系统资源的消耗受到了开发者的欢迎. 本文, ...

最新文章

  1. 使用jquery-easyui写的CRUD插件(2)
  2. 最容易被忽视的学习材料--技术标准 (z)
  3. WordCount--统计输入文件的字符数、行数、单词数(java)--初级功能
  4. 电脑模拟器哪个好_电脑系统杀毒软件哪个好测评
  5. 程序员学历要求越来越高,薪酬天花板犹如发际线,原因很简单!
  6. IE浏览器9.0与王码五笔不兼容的问题
  7. macOS Python安装教程
  8. java 获取今天是星期几
  9. C语言—递归函数有5个人围坐在一起,问第5个人多大年纪,他说比第4个人大2岁;问第4个人,他说比第3个人大2岁;问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说自己10岁
  10. Java——继承的概念
  11. 如何把catia完全卸载干净_catia软件卸载不了怎么办
  12. 网络通信学习笔记之 ———Socket网络通信
  13. Chap.18 总结《CL: An Introduction》 (Vyvyan Evans)
  14. 用vmware安装雨林木风虚拟机系统的坑
  15. 【PyTorch深度学习项目实战100例】—— Python+OpenCV+MediaPipe手势识别系统 | 第2例
  16. JAVA基础语法_1
  17. 【计算机网络】第四部分 网络层(20) IP协议
  18. Python生成词云的制作
  19. SCU - 4437 Carries
  20. 固定资产管理系统提升企业固定资产管理效率

热门文章

  1. ginapi服务器性能,基于gin web框架搭建RESTful API服务
  2. iostextarea获取焦点_jquery – 在iOS上的Safari中针对textarea触发的不一致事件
  3. 数论 II(组合数学)
  4. 2023年某科技公司前端开发初级岗的面试笔试真题(含选择题答案、问答题解析、机试题源码)
  5. 十次方专属社交平台前端系统开发 网站前台-活动与招聘
  6. 3808: Neerc2012 Labyrinth of the Minotaur
  7. 发票扫一扫,OCR识别功能
  8. php 查看nts,nts | php教程|php源码|php学习
  9. java笔试题---用*打印漏斗形,信雅达笔试题
  10. 如何在cmd中,使用cd进入指定文件目录