nginx配置http及https

nginx配置http及https

现在日常工作中的项目大多数都是采用前后端分离,就用到了nginx进行反向代理、处理静态资源等;因此,记录整理了nginx一些常用的配置;

1.动静分离

将动态请求和静态请求分开处理;通常是将动态请求转发到应用服务器进行处理,静态请求由nginx直接提供;

bash 复制代码
server {
    listen 80;
    location / {
    	#指定静态资源
        root /data/test/test-front/dist/;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    location /prod-api/ {
    	#指定动态请求的处理
        proxy_pass http://127.0.0.1:8000/;
    }
}

2.负载均衡

将客户端请求均匀分配到多个服务器上,提高系统的响应速度及可用性;

bash 复制代码
http {
    upstream backend {
    	#配置负载均衡服务器组
    	#有端口需要把端口带上server www.xxxxx.com:80;
        server www.xxxxx1.com;
        server www.xxxxx2.com;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://backend;
        }
    }
}

提示:可以对负载均衡服务器组里面的节点设置权重、尝试连接主机失败次数、失败次数后下次检查的间隔时间、热备、标记为不可用等;
weight=1:设置服务器权重,默认1,权重值越大,接受的请求比例越大;
max_fails=1:nginx尝试连接失败的次数,超过次数就会将请求转发给其他正常工作的服务器;
fail_timeout=10s:设置尝试连接失败后,下次检查的间隔时间,默认10s;
backup:热备,将服务器作为备用服务器,其他主服务器全部宕机后就会像他转发请求;
down:标记服务器为不可用;
例如:
server www.xxxxx.com weight=1 max_fails=1 fails_timeout=10s;<----#默认配置
server www.xxxxx.com backup;
server www.xxxxx.com down;

3.配置https

bash 复制代码
server {
    listen       443 ssl;
    server_name  www.xxxxx.com;
    
    #指定ssl的crt文件和key文件路径;
    ssl_certificate      /data/test/ssl/xxxxxx.crt;
    ssl_certificate_key  /data/test/ssl/xxxxxx.key;
    
    #设置Nginx的SSL/TLS片段优化加强HTTPS安全性和性能;
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
    
    #强制转htttps
    proxy_redirect http:// $scheme://;
    
   #设置请求体、文件大小限制,默认1m;非必选;
    client_max_body_size 50m;
    
location / {
        root   /data/test/test-front/dist/;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
}

 location /prod-api/ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8000/;
}

4.请求重定向

1.return简单重定向

如:访问www.xxxxx.com时,返回一个301的请求,并重定向到http://www.xxxxx.com:8000,保留其参数;
www.xxxxx.com:源地址;
http://www.xxxxx.com:8000/:目标地址;
?$args:表示保留参数;

bash 复制代码
server {
    listen 80;
    server_name www.xxxxx.com;

    location / {
        return 301 http://www.xxxxx.com:8000/?$args;
    }
}

2.rewrite根据规则进行重定向

如:访问www.xxxxx.com时,进行规则匹配^/(.*),将符合规则的重定到http://www.xxxxx.com:8000,保留其参数;
www.xxxxx.com:源地址;
^/(.*)$:匹配url规则(任何url路径),并将匹配到的内容存储在$1中;
http://www.xxxxx.com:8000/:目标地址;
?$args:表示保留参数;
permanent:表示永久重定向;

bash 复制代码
server {
    listen 80;
    server_name www.xxxxx.com;

    location / {
        rewrite ^/(.*)$ http://www.xxxxx.com:8000/$1?$args permanent;
    }
}

5.常用参数配置介绍

client_max_body_size:#设置请求体、文件大小限制默认1m,如:client_max_body_size 50m;
client_header_timeout:默认值60s,client发送一个请求头的超时时间,如:client_header_timeout 60s;
client_body_timeout:默认值60s,设置请求体的读取超时时间,如:client_header_timeout 60s;
proxy_connect_timeout:默认60s,设置的连接超时时间,如:proxy_connect_timeout 60s;
proxy_read_timeout 600s;:默认60s,设置nginx等待请求响应的时间,如:proxy_read_timeout 60s;
proxy_send_timeout:默认60s,设置发送请求给服务器的超时时间,如:proxy_send_timeout 60s
proxy_set_header Host $http_host;:设置转发请求的请求头host字段为,客户端主机;
proxy_set_header X-Real-IP $remote_addr;:设置转发请求的请求头X-Real-IP字段为,客户端真实ip(准确的说是上一节点的ip);
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:设置X-Forwarded-For字段,用来记录原始ip地址;
proxy_set_header X-Forwarded-Proto $scheme;:将请求重定向为指定协议,如:https配置中,即是强制转https;

以上参数可以配置在,http、server、location等块中,区别是不同块作用域不同;

相关推荐
Volunteer Technology3 小时前
FastDFS+Nginx
运维·nginx
yixvxi3 小时前
RFC 8659:DNS CAA资源记录
服务器·https·ssl
三水不滴3 小时前
计算机网络核心网络模型
经验分享·笔记·tcp/ip·计算机网络·http·https
SunflowerCoder4 小时前
基于插件化 + Scriban 模板引擎的高效 HTTP 协议中心设计
http·c#
Remember_9934 小时前
MySQL 索引详解:从原理到实战优化
java·数据库·mysql·spring·http·adb·面试
qinyia6 小时前
**使用AI助手在智慧运维中快速定位并修复服务异常:以Nginx配置错误导致502错误为例**
linux·运维·服务器·数据库·mysql·nginx·自动化
404Clukay6 小时前
Windows Server 配置 Let‘s Encrypt 免费 HTTPS 证书(WACS + Nginx 自动化方案)
windows·nginx·https
2501_915918416 小时前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
Zach_yuan8 小时前
从零理解 HTTP:协议原理、URL 结构与简易服务器实现
linux·服务器·网络协议·http
苦逼IT运维8 小时前
Helm 实战指南(四):生产环境 Helm 部署 CVAT 全记录:Ceph 存储、GPU 节点污点调度与 HTTPS 指南
ceph·网络协议·https