一、将Nginx作为一台web服务器来提供网站服务
在location快中通过root指令来指定网站根目录即可,如果配置HTTPS,只需要监听启用443端口并配置SSL这两个参数指定证书和私钥即可。
server {
listen 80;
server_name _;
location / {
root /data/wwwroot;
index index.html index.htm;
}
}
# HTTPS server
server {
listen 443 ssl;
server_name _;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private-key.key;
location / {
root /data/wwwroot;
index index.html index.htm;
}
}
二、方向代理:nginx作为网站的访问入口,用户先访问nginx,在将请求转发到后端,在将相应反应给用户。
使用的目的:隐藏后端服务器,来统一的对外暴漏访问,提高后端服务器的安全性。
配置:
server {
listen 8088; # 端口
server_name 120.0.0.1; # 域名
#下面这句话就是允许跨域
add_header Access-Control-Allow-Origin *;
location ^~ /jeecg-boot {
proxy_pass http://127.0.0.1:8080/path/; # 后端服务访问地址
proxy_set_header Host 127.0.0.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
三、负载均衡:把nginx当做一个负载均衡器,用户访问nginx,nginx再将请求转发到后端的多个服务器上,来提高web服务器的高可用和并发能力,提供了丰富的流量分发算法,默认采用轮询转发。可以配置ip_hash,最小链接,权重值
upstream webservers{
ip_hash; # 回话保持
server 127.0.0.1:8080
server 127.0.0.2:8080
server 127.0.0.3:8080
# ... 配置剩余的ip
}
server {
listen 80; # 端口
server_name 120.0.0.1; # 域名
#下面这句话就是允许跨域,我以知乎日报API为例
add_header Access-Control-Allow-Origin *;
location / {
proxy_pass http://webservers; # 不用修改
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
四、URL重定向:例如将老域名跳转到新域名
server {
listen 8080;
server_name old.aliangedu.cn
location / {
rewrite ^/(.*)$ https://new.aliangedu.cn/$1
}
}
server {
listen 8080;
server_name old.aliangedu.cn
location / {
rewrite ^/old-path/(.*)$ /new-path/$1
}
}
五、防盗链:防止其他网站来盗用自己网站资源的安全机制
注意:referers可以被伪造,不是绝对安全
server {
listen 8080;
server_name _
location ~* \.(gif|jpg|png)$ {
valid_referers none blocked *.aliangedu.cn;
if($invalid_referers){
return 403;
}
}
}
六、手机端重定向pc端
server {
listen 8080;
server_name _;
location / {
if($http_user_agent ~* '(android|iphone|ipad)'){
rewite ^/(.*)$ https://m.aliangedu.cn/$1
}
}
}
七、基于请求路径转发不同服务
server {
listen 80; # 端口
server_name _; # 域名
location /path1/ {
proxy_pass http://127.0.0.1; # 不用修改
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /path2/ {
proxy_pass http://127.0.0.2; # 不用修改
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /path3/ {
proxy_pass http://127.0.0.3; # 不用修改
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}