1、nginx强制跳转https配置,通过http状态吗实现,http状态吗地址:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/307

301  It is therefore recommended to use the 301 code only as a response for GET or HEAD methods and to use the 308 Permanent Redirect for POSTmethods instead, as the method change is explicitly prohibited with this status.

#cat  conf.d/test.conf

server {

listen 80;
server_name cul.xget.com;

location / {
auth_basic "it's protected";
auth_basic_user_file /data/.htpasswd;
proxy_pass http://10.10.17.31:8500;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Access-Control-Allow-Origin *;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
}
listen 443 ssl;
ssl_certificate /root/USSL_TBDmkIc7/Nginx/public.pem;
ssl_certificate_key /root/USSL_TBDmkIc7/Nginx/private.key;
ssl_session_cache shared:le_nginx_SSL:1m; # managed by Certbot
ssl_session_timeout 1440m; # managed by Certbot

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # managed by Certbot
ssl_prefer_server_ciphers on; # managed by Certbot

ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-SHA ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES256-SHA384 DHE-RSA-AES128-GCM-SHA256 DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES128-SHA DHE-RSA-AES256-SHA DHE-RSA-AES128-SHA256 DHE-RSA-AES256-SHA256 EDH-RSA-DES-CBC3-SHA"; # managed by Certbot

if ($scheme != "https"){

return 301 https://$host$request_uri;
}
}

2、根据remote_addr转发流量及if的或匹配

        location / {
if ( $remote_addr = "183.18.16.69" ){
rewrite ^/(.*) /saturn-api-canary/$ break;
proxy_pass http://10.42.7.12:32080;
break;
}
if ( $remote_addr = "115.25.5.107" ){
rewrite ^/(.*) /saturn-admin-canary/$ break;
proxy_pass http://10.42.7.12:32080;
break;
}
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size ;
proxy_pass http://api;
client_max_body_size 100m;
proxy_read_timeout ;
access_log /var/log/nginx/share.log hehe;
error_log /var/log/nginx/api_error.log warn;
add_header X-Upstream $upstream_addr always;
proxy_redirect off;
}

或匹配:

   location / {
if ( $remote_addr ~ "183.18.16.69|115.25.5.107" ){
rewrite ^/(.*) /saturn-api-canary/$ break;
proxy_pass http://10.42.7.12:32080;
break;
}
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size ;
proxy_pass http://api;
client_max_body_size 100m;
proxy_read_timeout ;
access_log /var/log/nginx/share.log hehe;
error_log /var/log/nginx/api_error.log warn;
add_header X-Upstream $upstream_addr always;
proxy_redirect off;
}

3、根据header转发流量

        location / {
if ( $http_yfflag = 2 ){
rewrite ^/(.*) /saturn-api-canary/$ break;
proxy_pass http://10.42.7.12:32080;
break;
} proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size ;
proxy_pass http://api;
client_max_body_size 100m;
proxy_read_timeout ;
access_log /var/log/nginx/share.log hehe;
error_log /var/log/nginx/api_error.log warn;
add_header X-Upstream $upstream_addr always;
proxy_redirect off;
}

4、if实现“与”操作

nginx不支持shell的and、&&实现,也不支持if嵌套,所以采用设置变量的方式实现。首先设置一个变量置为空 set $flag 0;然后根据条件追加值,在最终的if块中根据$flag的值进行判断,实现与和或。切记要在最终的if块中添加break,

否则proxy_pass也会被执行。

AND:

 location / {
if ( $remote_addr !~ "183.128.16.69|115.205.5.107" ){
proxy_pass http://10.4.8.77;
break;
}
set $foo "";
if ( $http_fflag = ){
set $foo "${foo}1";
}
if ( $http_dflag = ){
set $foo "${foo}1";
}
if ( $foo ~* "" ){
rewrite ^ http://zipkin.xet.com/zipkin/ break;
break;
}
proxy_pass http://api;
}

5、nginx访问静态资源

这里使用两种方式都可以实现:

两者都是在server段的location下使用

1)使用alias

server{
listen *;
server_name test.eee.com;
location /getQQCode/ {
alias /etc/nginx/qq/;
}
}

提前将静态文件放到alias的目录下面,这样访问http://test.eee.com/getQQCode/index.html,实际服务器的访问路径是/etc/nginx/qq/index.heml。

2)使用root

server{
listen *;
server_name test.eee.com;
location /getQQCode/ {
root /etc/nginx/qq/;
}
}

这样访问http://test.eee.com/getQQCode/index.html,实际服务器的访问路径是/etc/nginx/qq/getQQCode/index.heml。root会将路径进行拼接。例如使用root的时候会将uri  /getQQCode/拼接到root的路径后面

即/etc/nginx/qq/getQQCode/index.heml。

nginx 跳转系列的更多相关文章

  1. Nginx知多少系列之(七)负载均衡策略

    目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略 8.加权轮询(round rob ...

  2. Nginx知多少系列之(十四)Linux下.NET Core项目Nginx+Keepalived高可用(主从模式)

    目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略 8.加权轮询(round rob ...

  3. Nginx之旅系列 - Nginx日志功能 PK Linux内核printk

    题记:Nginx之旅系列是用来记录Nginx从使用到源码学习的点点滴滴,分享学习Nginx的快乐 Nginx 首页: http://nginx.org/ Nginx日志功能 PK Linux内核pri ...

  4. Nginx之旅系列 - Nginx的configuration

    题记:Nginx之旅系列是用来记录Nginx从使用到源码学习的点点滴滴,分享学习Nginx的快乐 Nginx 首页: http://nginx.org/ Nginx的configuration 今天对 ...

  5. java应用,直接请求没问题,通过nginx跳转状态吗400

    今天配置金融的测试环境,直接调用java应用返回状态200,通通过nginx跳转,会返回400,真是一头雾水..... 参考文档: https://www.cnblogs.com/yanghj010/ ...

  6. Nginx技术研究系列5-动态路由升级版

    前几篇文章我们介绍了Nginx的配置.OpenResty安装配置.基于Redis的动态路由以及Nginx的监控. Nginx-OpenResty安装配置 Nginx配置详解 Nginx技术研究系列1- ...

  7. nginx 跳转

    nginx 跳转 一.需求:当需要在别的机访问本机房的服务器问题. 虚拟主机头配置 server { listen ; server_name test.zlx.com; location / { i ...

  8. nginx 域名跳转 Nginx跳转自动到带www域名规则配置、nginx多域名向主域名跳转

    nginx 域名跳转 Nginx跳转自动到www域名规则配置,如果设置使 mgcrazy.com域名在用户访问的时候自动跳转到 www.mgcrazy.com呢?在网上找了好多资料都没有一个完整能解决 ...

  9. Nginx知多少系列之(六)Linux下.NET Core项目负载均衡

    目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略详解 8.Linux下.NET C ...

随机推荐

  1. redis简单使用

    主要参考资料:http://wiki.jikexueyuan.com/project/redis-guide/data-type.html一.redis 安装1.在官网下载安装包2.解压安装包 tar ...

  2. CI

    做项目时,经常会碰到需要使用php的情况,自己也下决心把php好好学一下. 先从CI开始,再看一下项目中的php代码是如何写的.

  3. AngularJS $observe $watch

    $observe $watch都可以用来监听值的变化,但是他们有显著的区别.$observe是用来监视DOM属性值的变化,而 $watch监视scope属性值的变化.AngularJS中的监听,都知道 ...

  4. ASP.NET Web API 框架研究 Controller创建过程与消息处理管道

    现在我们从代码角度来看下,从消息处理管道末尾是怎么创建出Controller实例的.消息处理管道末端是一个叫HttpRoutingDispatcher的处理器,其内部完成路由后 ,会把消息派送给其内部 ...

  5. 量子力学与广义相对论的统一——用广义相对论解释海森堡测不准原理 Unification of Quantum Mechanics and General Relativity: Explaining Heisenberg Uncertainty Principle with General Relativity

    从海森堡测不准原理的实验开始: 从实验中可以看到,当有光源测定路线,且双孔打开的时候,接收板原波谷处变成了波峰. 对此,广义相对论的解释是:此时电子经过双孔后的轨迹发生了变化.双孔周围的空间弯曲度被光 ...

  6. bootstrap基础学习小记(二)排版、列表、代码风格、表格

    排版——标题.副标题.段落(正文文本).强调内容.粗体.斜体.强调相关的类.文本对齐 <!DOCTYPE HTML> <html> <head> <meta ...

  7. FFmpeg简易播放器的实现-视频播放

    本文为作者原创:https://www.cnblogs.com/leisure_chn/p/10047035.html,转载请注明出处 基于FFmpeg和SDL实现的简易视频播放器,主要分为读取视频文 ...

  8. 关于ajax访问webservice查询数据量稍微大一点,就会返回error500的解决方案

    只需要在web.config的configeration节点中增加如下子节点即可: <system.web.extensions>       <scripting>      ...

  9. lua breakpoint

    http://blog.codingnow.com/2016/11/lua_debugger.html It aims to separate debug code from host code. A ...

  10. postgresql 简单入门

    安装 https://www.postgresql.org/download/linux/redhat/yum install https://download.postgresql.org/pub/ ...