营销型网站具备的二大能力,网站开发需要的工具,网站建设相关优化,网站反链怎么做项目背景#xff1a; 将域名请求从默认的80端口转发到443 ssl。本项目特殊之处是一个端口监听多个域名#xff0c;某些域名还有跳转到特定的地址。
普通情况#xff1a; server { listen 80; #默认的80端口#xff0c;非…项目背景 将域名请求从默认的80端口转发到443 ssl。本项目特殊之处是一个端口监听多个域名某些域名还有跳转到特定的地址。
普通情况 server { listen 80; #默认的80端口非加密通信 server_name xxx.org.cn; #监听的请求域名 rewrite ^(.*)$ https://${server_name}$1 permanent; }
说明 rewrite 为固定关键字表示开始进行rewrite匹配规则。 regex 为 ^/(.*)。 这是一个正则表达式匹配完整的域名和后面的路径地址。 replacement就是 http://xxx.org.cn/$1 这块了其中$1是取regex部分()里面的内容。如果匹配成功后跳转到的URL。 flag 就是 permanent代表永久重定向的含义即跳转到 http://xxx.org.cn/$1 地址上。 本项目情况 Nginx默认的80端口监听多个域名。 废话不多数直接贴配置。 server { listen 80; # 同时监听多个域名 server_name a.stm.cn; server_name b.stm.cn; server_name c.stm.cn; # 实现访问http://a.sdstm.cn 不带URI # 自动跳转https://a.sdstm.cn/main/ # 因为Nginx不支持if判断嵌套也不支持逻辑或与设置标识符 set $flag 0; # 判断请求的host匹配则修改标识符 if ($host a.sdstm.cn ){ set $flag ${flag}1; } # 判断请求的当前URI匹配则修改标识符 if ($document_uri /){ set $flag ${flag}1; } # 判断当前标识符的值匹配则跳转到对应地址 if ( $flag 011 ){ rewrite ^(.*)$ https://$host/main permanent; } # 匹配以“stm.cn”为后缀的域名请求匹配则跳转到对应的https地址 if ( $host ~ (stm.cn)$ ){ rewrite ^(.*)$ https://$host$1 permanent; #跳转到对应的$host地址 #rewrite ^(.*)$ https://${server_name}$1 permanent; #全部跳转到域名a.stm.cn } 知识拓展
if (condition) {// ....
}
该指令用来支持条件判断的并且根据条件判断结果来选择不同的nginx的配置我们可以在server块或location块中配置该指令。
condition 是布尔值 true/false的含义。
Rewrite 指令可用的全局变量如下
1. $args: 该变量中存放了请求URL中的请求指令。比如 http://127.0.0.1:3001?arg1value1arg2value2 中的 arg1value1arg2value2。 2. $content_length: 该变量中存放了请求头中的Content-length字段。 3. $content_type: 该变量中存放了请求头中的 Content-type字段。 4. $document_root: 该变量中存放了针对当前请求的根路径。 5. $document_uri: 该变量中存放了请求的当前URI, 但是不包括请求指令。比如 http://xxx.abc.com/home/1?arg1value1 arg2value2; 中的 /home/1 6. $host: 变量中存放了请求的URL中的主机部分字段比如http://xxx.abc.com:8080/home中的 xxx.abc.com. 7. $http_host: 该变量与$host唯一区别带有端口号比如上面的是 xxx.abc.com:8080 8. $http_user_agent: 变量中存放客户端的代理信息。 9. $http_cookie, 该变量中存放客户端的cookie信息。 10. $remote_addr 该变量中存放客户端的地址。 11. $remote_port 该变量中存放了客户端与服务器建立连接的端口号。 12. $remote_user 变量中存放客户端的用户名。 13. $request_body_file 变量中存放了发给后端服务器的本地文件资源的名称 14. $request_method 变量中存放了客户端的请求方式比如 GET、POST等。 15. $request_filename 变量中存放了当前请求的资源文件的路径名。 16. $request_uri 变量中存放了当前请求的URI并且带请求指令。 17. $query_string 和变量$args含义一样。 18. $scheme 变量中存放了客户端请求使用的协议比如 http, https等。 19. $server_protocol 变量中存放了客户端请求协议的版本, 比如 HTTP/1.0、HTTP/1.1 等。 ..... 等等 表示值相同
~ 表示匹配过程中对大小写敏感。 ~* 表示匹配过程中对大小写不敏感。 !~ 如果 ~ 匹配失败时那么该条件就为true。 !~* 如果 ~* 匹配失败时那么该条件就为true
-f 如果请求的文件存在那么该条件为true。 !-f 如果该文件的目录存在该文件不存在那么返回true。如果该文件和目录都不存在则为false。如果请求的目录不存在请求的文件存在也为false。
if (-f $request_filename) {// 判断请求的文件是否存在
}if (!-f $request_filename) {// 判断请求的文件是否不存在
} -d如果请求的目录存在则返回true。否则返回false。 !-d, 如果请求的目录不存在但是该请求的上级目录存在则返回true。如果该上级目录不存在则返回false