在conf中只有一个serve时,该站就是默认网站
基本设置
'''默认网站'''
server {
#虚拟主机使用的端口
listen 80;
#虚拟主机域名
server_name localhost;
#虚拟主机支持的字符集
charset utf-8;
#访问日志路径,多个网站必须单独设定
#access_log logs/host.access.log main;
#定义web根路径
location / {
#根目录路径
root html;
#索引页
index index.html index.htm;
}
#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;
}
访问控制
某些链接只允许本机访问
location /a {
allow 192.168.1.0/24; 或者 localhost
deny all; # 拒绝所有
#return 404; 可以迷惑访问者
#return http://www.jd.com;
}
访问页面登录验证
location /c {
auth_basic "登陆验证";
auth_basic_user_file /etc/nginx/htpasswd;
}
自定义访问日志
- log_format格式变 :
- $remote_addr #记录访问 站的客户端地址
- $remote_user #远程客户端 户名
- $time_local #记录访问时间与时区
- $request # 户的http请求起始 信息
- $status #http状态码,记录请求返回的状态码, 如:200、301、404等
- $body_bytes_sent #服务 发送给客户端的响应body字节数
- $http_referer #记录此次请求是从哪个连接访问过来的,可以根据该参数进 防盗链设置。
- $http_user_agent #记录客户端访问信息, 如:浏览 、 机客户端等
- $http_x_forwarded_for #当前端有代 服务 时,设置web节点记录客户端地址的配置,此参数 效的前提是代 服务 也要进 相关的x_forwarded_for设置
自定义日志格式json
log_format main_json '{"@timestamp":"$time_local",' '"client_ip": "$remote_addr",'
'"request": "$request",'
'"status": "$status",'
'"bytes": "$body_bytes_sent",'
'"x_forwarded": "$http_x_forwarded_for",'
'"referer": "$http_referer"'
'}’;
access_log logs/access_json.log main_json;
防盗链
location /images/ {
alias /data/images/;
valid_referers none blocked *.ayitula.com;
if ($invalid_referer) {
return 403;
} }
虚拟主机
同时发布两个网站:
目录:
DocumentRoot /usr/local/nginx/html/web1
DocumentRoot /usr/local/nginx/html/web2
- 基于IP的不同虚拟主机
!!缺点 需要多个IP 如果是公网IP 每个IP都需要付费
server {
listen location / {
root index
192.168.10.42:80;
html/web1;
index.html index.htm index.php;
}
}
# 第二个
server {
listen location / {
root index
192.168.10.52:80;
html/web2;
index.html index.htm;
}
}
- 基于端口的不同虚拟主机
!!缺点 缺点 端口你是无法告诉公网用户 无法适用于公网客户 适合内部用户
# 基于端口
server {
listen 80;
#server_name www.abc.com;
location / {
root html/web1;
index index.html index.htm index.php;
}
}
server {
listen 8080;
#server_name www.abc.com;
location / {
root html/web2;
index index.html index.htm index.php;
}
}
- 基于域名的不同虚拟主机
!!缺点 一个网站必然有一个域名
server {
listen 80;
server_name www.abc.com;
location / {
root html/web2;
index index.html index.htm index.php;
}
}
server {
listen 80;
server_name www.xxjb.com;
location / {
root html/web2;
index index.html index.htm;
}
}