nginx配置
一:Nginx介绍

二:Nginx配置
Nginx可以充当虚拟主机
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root G:\program\web-demo\html;
index index.html index.htm;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
root G:\program\web-demo;
if (-f $request_filename) {
expires 1d;
break;
}
}
location ~ .*\.(js|css)$
{
root G:\program\web-demo;
if (-f $request_filename) {
expires 1d;
break;
}
}
location ~* \.(eot|ttf|ttc|otf|eot|woff|woff2|svg)$ {
root G:\program\web-demo;
add_header Access-Control-Allow-Origin *;
}
location ~ (.*\.json)
{
root G:\program\web-demo;
error_page 405 =200 $1;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
Nginx-反向代理配置

Nginx-负载均衡配置

Nginx 虚拟主机配置 通过域名

server {
listen 80;
server_name 101.200.242.66;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root /techan/dist/;
index index.html index.htm;
}
location ^~/api/ {
proxy_pass http://101.200.242.66:8088/;
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
注意:
location带/, proxy_pass不带上下文去除
# 转发示例:
# 请求:http://aaa.com/system/path/request
# 转发:http://bbb.com/path/request
#
location ^~ /system/ {
proxy_pass http://bbb.com;
}
保留
1. location不带/, proxy_pass不带上下文保留
# 转发示例
# 请求:http://aaa.com/system/path/request
# 转发:http://bbb.com/system/path/request
#
location ^~ /system {
proxy_pass http://bbb.com;
}
若proxy_pass 后加’/',代表去除掉请求和 location 的匹配的字符串
不加 ’ / ’ 则追加全部请求到地址后面。
# 开启gzip gzip on; # 开启gzip_static # gzip_static 开启后可能会报错,需要安装相应的模块, 具体安装方式可以自行查询 # 只有这个开启,vue文件打包的.gz文件才会有效果,否则不需要开启gzip进行打包 gzip_static on; gzip_proxied any; gzip_min_length 1k; gzip_buffers 4 16k; #如果nginx中使用了多层代理 必须设置这个才可以开启gzip。 gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_vary off; gzip_disable "MSIE [1-6]\.";
Nginx 常用命令
启动Nginx start Nginx
关闭Nginx Nginx -s stop
重启配置文件 nginx -s reload
快速停止或关闭Nginx:nginx -s stop
正常停止或关闭Nginx:nginx -s quit
nginx部署多项目
参考:https://www.csdn.net/tags/MtjaYgzsNTU3OTItYmxvZwO0O0OO0O0O.html
https://blog.csdn.net/qq_18831501/article/details/123714516
user nginx lion # 用户是nginx;组是lion
worker_processes 4; # 指定具体子进程数量
worker_processes auto; # 与当前cpu物理核心数一致
域名匹配的四种写法:
精确匹配: server_name http://www.nginx.com ;
左侧通配: server_name *.http://nginx.com ;
右侧统配: server_name www.nginx.* ;
正则匹配: server_name ~^www\.nginx\.*$ ;
匹配优先级:精确匹配 > 左侧通配符匹配 > 右侧通配符匹配 > 正则表达式匹配
3、访问分析
当访问 http://www.nginx-test.com 时,都可以被匹配上,因此选择优先级最高的“完全匹配”;
当访问 http://mail.nginx-test.com 时,会进行“左匹配”;
当访问 http://www.nginx-test.org 时,会进行“右匹配”;
当访问 http://doc.nginx-test.com 时,会进行“左匹配”;
当访问 http://www.nginx-test.cn 时,会进行“右匹配”;
当访问 fe.nginx-test.club 时,会进行“正则匹配”;
root会将路径和url叠加,alias则只取定义路径。
location /image { alias /opt/nginx/static/image/; } #当用户访问 www.test.com/image/1.png 时,实际在服务器找的路径是 /opt/nginx/static/image/1.png
注意: 使用 alias 末尾一定要添加 / ,并且它只能位于 location 中。这个也是访问图片的配置方法
location匹配规则
location [ = | ~ | ~* | ^~ ] uri {
...
}
匹配规则:
= 精确匹配;
~ 正则匹配,区分大小写;
~* 正则匹配,不区分大小写;
^~ 匹配到即停止搜索;
匹配优先级: = > ^~ > ~ > ~* > 不带任何字符。
location的反斜杠
location /test { ... } location /test/ { ... }
不带 / 当访问 http://www.nginx-test.com/test 时, Nginx 先找是否有 test 目录,如果有则找 test 目录下的 index.html ;如果没有 test 目录, nginx 则会找是否有 test 文件。
带 / 当访问 http://www.nginx-test.com/test 时, Nginx 先找是否有 test 目录,如果有则找 test 目录下的 index.html ,如果没有它也不会去找是否存在 test 文件。
autoindex
用户请求以 / 结尾时,列出目录结构,可以用于快速搭建静态资源下载网站。
server { listen 80; server_name fe.lion-test.club; location /download/ { root /opt/source; autoindex on; # 打开 autoindex,,可选参数有 on | off autoindex_exact_size on; # 修改为off,以KB、MB、GB显示文件大小,默认为on,以bytes显示出⽂件的确切⼤⼩ autoindex_format html; # 以html的方式进行格式化,可选参数有 html | json | xml autoindex_localtime off; # 显示的⽂件时间为⽂件的服务器时间。默认为off,显示的⽂件时间为GMT时间 } }
负载均衡
hash算法通过指定关键字作为 hash key ,基于 hash 算法映射到特定的上游服务器中。关键字可以包含有变量、字符串。
upstream demo_server { hash $request_uri; server 121.42.11.34:8020; server 121.42.11.34:8030; server 121.42.11.34:8040; } server { listen 80; server_name balance.lion.club; location /balance/ { proxy_pass http://demo_server; } }
ip_hash根据客户端的请求 ip 进行判断,只要 ip 地址不变就永远分配到同一台主机。它可以有效解决后台服务器 session 保持的问题
upstream demo_server { ip_hash; server 121.42.11.34:8020; server 121.42.11.34:8030; server 121.42.11.34:8040; } server { listen 80; server_name balance.lion.club; location /balance/ { proxy_pass http://demo_server; } }
最少连接数:算法各个 worker 子进程通过读取共享内存的数据,来获取后端服务器的信息。来挑选一台当前已建立连接数最少的服务器进行分配请求。
upstream demo_server { zone test 10M; # zone可以设置共享内存空间的名字和大小 least_conn; server 121.42.11.34:8020; server 121.42.11.34:8030; server 121.42.11.34:8040; } server { listen 80; server_name balance.lion.club; location /balance/ { proxy_pass http://demo_server; } }
黑白名单
Nginx利用deny和allow指令来实现黑白名单的配置,利用黑白名单进行安全配置。
#语法 allow address | CIDR | all; deny address | CIDR | all; #模块:http/server/location #参数说明: #allow:允许访问。 #deny:禁止访问。 #address:具体的ip地址。 #CIDR:ip加掩码形式地址。 #all:所有ip地址。
配置禁止访问文件和文件夹
location ^~ /project/deny.txt {
alias /webroot/proj/;
deny all;
}
^~ /project/ 意思是接受从外部访问(如浏览器)的 URL 地址,比如http://www.domain.com/project;
^~ /project/deny.txt 意思是这一条 location 明确是对其起作用的;
alias /webroot/proj/ 意思是将 对 /project 的访问解析到 /webroot/proj 目录;
deny all 意思是屏蔽任何来源
也可以把 deny all 改换成 return 404,这样将返回 404 而不是 403 Forbidden,更有“欺骗性”。
参考:https://zhuanlan.zhihu.com/p/368824600

浙公网安备 33010602011771号