我的 Nginx 配置,域名不带 www 跳转到www,http 强制跳转 https,这些都有了
话不多说,先贴部分配置:
server {
listen 80;
server_name www.your-domain.com;
rewrite ^(.*)$ https://www.your-domain.com$1 permanent;
}
server {
listen 443 ssl;
server_name www.your-domain.com;
ssl_certificate /home/ssl_certificate/your-domain.com.pem;
ssl_certificate_key /home/ssl_certificate/your-domain.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_session_timeout 5m;
if ( $host != www.your-domain.com ) {
rewrite ^(.*)$ https://www.your-domain.com$1 permanent;
}
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
# server_name _;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
一、https
配置
server {
# 我们都知道(我们都应该知道),443是 https 的默认埠
listen 443 ssl;
server_name www.your-domain.com;
# 你要有证书,才能 https,免费申请一个吧,七牛云,阿里云都有免费一年的证书
ssl_certificate /home/ssl_certificate/your-domain.com.pem;
ssl_certificate_key /home/ssl_certificate/your-domain.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_session_timeout 5m;
# 下面这句就是当识别到 HOST 不是带 www 的全部都 301 带上 www
if ( $host != www.your-domain.com ) {
rewrite ^(.*)$ https://www.your-domain.com$1 permanent;
}
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
# server_name _;
location / {
# 我是 java web 所以用了 Tomcat ,但是我要用 nginx 做转发,因此有了如下的配置
proxy_pass http://127.0.0.1:8080;
}
}
二、将http
强制为https
访问
将 80
与 443
埠分别配置一个 server
,让80
埠访问的强制 301
跳转到 https
。如下所示:
把所携带的参数都带上
rewrite ^(.*)$ https://www.your-domain.com$1 permanent;
}
三、将不带www
的访问强制加上www
nginx
的配置文件可以写这种判断和表达式,总之是很厉害的,仔细观察下面的 if
判断很容易明白讲的什么意思,当 HOST
不是带 www
的访问时 302 到 www
上面。
# 下面这句就是当识别到 HOST 不是带 www 的全部都 302 带上 www
if ( $host != www.your-domain.com ) {
rewrite ^(.*)$ https://www.your-domain.com$1 permanent;
}
需要注意的是:
unknown directive "if($host!="if ( $host != www.your-domain.com ) {
这一句一定要按照格式书写,括弧前后的空格必须带著,还有if
之后的空格也一样。如果不!会报错:
四、总结一下
- 为什么要用
https
?其实说白了,不是因为大家都用,所以我们也用。举一个最简单的例子https
能防止网路运营商给你的页面加东西,也能防止网路运营商窥探你的隐私。如果我们用http
,网路运营商可以在你的页面加广告,可以把你的传输的网页进行过滤,比如说正则匹配过滤你的电话号码,邮箱,身份证号,等等个人信息。 再比如好多人用一些免费的科学上网工具,这些都是有风险的,你的数据流经过了第三方的伺服器,那么他就有可能截留分析你的网页信息。 - 为什么我们要非
www
跳转到www
?有助于你的网站的SEO和排名,要不信你试一试一些必须要注重SEO优化的网站类型,比如新闻资讯站这一类的,都会强制加上www
。其实这个www
是个遗留问题,本来已经没啥用了,但是因为历史已成定局,规则已经定下来,大家没办法,只有遵守了。本质上加上www
和不加www
是两个网站,搜索引擎统计的话会按照两个域名来统计,而且发现爬这两个网站的内容都是一个样,这对你的SEO有致命问题,当然现在的话随著搜索引擎的进化可能已经不存在这类问题了,但是不能不在意这些问题。 - 为什么要用
nginx
做为Tomcat
的代理?一个是nginx
性能好,而是可以做负载均衡,用户增长后可以快速部署多个Tomcat
分担压力。 - 还要要开
GZIP
压缩你的网页,JS,CSS!作用很大的,减少传输数据量。
(写著,写著,变成怎么做一个好站长了。)
推荐阅读: