话不多说,先贴部分配置:

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访问

80443 埠分别配置一个 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;
}

需要注意的是:if ( $host != www.your-domain.com ) { 这一句一定要按照格式书写,括弧前后的空格必须带著,还有if之后的空格也一样。如果不!会报错:

unknown directive "if($host!="

四、总结一下

  • 为什么要用 https ?其实说白了,不是因为大家都用,所以我们也用。举一个最简单的例子 https 能防止网路运营商给你的页面加东西,也能防止网路运营商窥探你的隐私。如果我们用 http ,网路运营商可以在你的页面加广告,可以把你的传输的网页进行过滤,比如说正则匹配过滤你的电话号码,邮箱,身份证号,等等个人信息。 再比如好多人用一些免费的科学上网工具,这些都是有风险的,你的数据流经过了第三方的伺服器,那么他就有可能截留分析你的网页信息。
  • 为什么我们要非 www 跳转到 www ?有助于你的网站的SEO和排名,要不信你试一试一些必须要注重SEO优化的网站类型,比如新闻资讯站这一类的,都会强制加上www。其实这个www是个遗留问题,本来已经没啥用了,但是因为历史已成定局,规则已经定下来,大家没办法,只有遵守了。本质上加上www和不加www 是两个网站,搜索引擎统计的话会按照两个域名来统计,而且发现爬这两个网站的内容都是一个样,这对你的SEO有致命问题,当然现在的话随著搜索引擎的进化可能已经不存在这类问题了,但是不能不在意这些问题。
  • 为什么要用 nginx 做为 Tomcat 的代理?一个是 nginx 性能好,而是可以做负载均衡,用户增长后可以快速部署多个 Tomcat 分担压力。
  • 还要要开 GZIP 压缩你的网页,JS,CSS!作用很大的,减少传输数据量。

(写著,写著,变成怎么做一个好站长了。)

推荐阅读:

查看原文 >>
相关文章