0%

Nginx 使用

Nginx安装和使用

Ubuntu 安装Nginx

1
2
sudo apt update
sudo apt install nginx

启动服务

nginx 所有服务

1
2
sudo service nginx
Usage: nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}

启动

1
sudo service nginx start

停止nginx服务

1
sudo service nginx stop

重新加载配置(修改完配置后执行)

1
sudo service nginx reload

查看nginx状态,这里会打印出nginx conf中需要优化的地方

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo service nginx status

● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-03-03 00:56:38 UTC; 1 day 13h ago
Docs: man:nginx(8)
Process: 62271 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS)
Main PID: 1531 (nginx)
Tasks: 3 (limit: 1092)
Memory: 15.8M
CGroup: /system.slice/nginx.service
├─ 1531 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─62272 nginx: worker process
└─62275 nginx: worker process

比如这种提示:
 nginx: [warn] the “ssl” directive is deprecated, use the “listen … ssl”
ssl 这个配置已经失效,可采用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/nginx/cert/1_www.xxx.cn_bundle.crt;
ssl_certificate_key /etc/nginx/cert/2_www.xxx.cn.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
server_name www.xxx.cn;
client_max_body_size 1024m;

location / {
...
}
}

之后重启

1
sudo service nginx restart

Nginx 配置

nginx 下载服务配置

1
2
3
4
5
6
7
8
location /downloads {  # url
alias /tmp; # 下载目录
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
charset utf-8,gbk;
index index.html index.htm;
}

nginx 内置变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$args :这个变量等于请求行中的参数,同$query_string
$content_length : 请求头中的Content-length字段。
$content_type : 请求头中的Content-Type字段。
$document_root : 当前请求在root指令中指定的值。
$host : 请求主机头字段,否则为服务器名称。
$http_user_agent : 客户端agent信息
$http_cookie : 客户端cookie信息
$limit_rate : 这个变量可以限制连接速率。
$request_method : 客户端请求的动作,通常为GET或POST。
$remote_addr : 客户端的IP地址。
$remote_port : 客户端的端口。
$remote_user : 已经经过Auth Basic Module验证的用户名。
$request_filename : 当前请求的文件路径,由root或alias指令与URI请求生成。
$scheme : HTTP方法(如http,https)。
$server_protocol : 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$server_addr : 服务器地址,在完成一次系统调用后可以确定这个值。
$server_name : 服务器名称。
$server_port : 请求到达服务器的端口号。
$request_uri : 包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。
$uri : 不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。
$document_uri : 与$uri相同。

http跳转https

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
server {
listen 80 default_server;
listen [::]:80 default_server;

# 直接重定向
# rewrite ^/(.*) https://www.xxx.cn/$1 permanent;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name _;
# 错误也跳转
error_page 404 https://www.xxx.cn/;
# 301 重定向
return 301 https://www.xxx.cn/$request_uri;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}

nginx配置静态文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/nginx/cert/1_www.xxx.cn_bundle.crt;
ssl_certificate_key /etc/nginx/cert/2_www.xxx.cn.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
server_name www.xxx.cn;
client_max_body_size 1024m;

location /ads.txt {
# 目录
root /var/www/html;
# 文件
index ads.txt;
}
}

直接暴露目录

1
2
3
4
5
6
location / {
# 指定目录
root /var/www/html;
# 自动索引
autoindex on;
}