【nginx】配置http自动跳转https

写在前面

博主最近去申请了ssl证书捣鼓了一下https踩了一些坑特地来记录一下。阿里云有免费ssl可以申请,部署过程也有帮助文档而且也比较简单就不再赘述了。

时效与环境

最后更新时间:2020年5月4日
OS:Ubuntu 18.04 LTS
Nginx:nginx/1.14.0 (Ubuntu)

nginx配置结构(apt安装版)

以下针对使用apt安装方法介绍,apt安装后的nginx结构类似于apache。
若是编译安装可以参考,结构基本一致。

在提供方法前,有必要先介绍nginx的目录结构,以便理解。若只是希望查看方法可以跳过该部分。

# 概览
/etc/nginx
	|- nginx.conf 		#主配置文件
	|- sites-available 	#存放站点配置文件
		|- defalut
		|- 其它自定义配置文件
	|- sites-enabled	#存放站点配置文件的链接
		|- defalut(链接)
		|- 其它自定义启用站点链接

主配置文件:/etc/nginx/nginx.conf

#####################
# 只截取部分配置!!!!#
#####################
http {
		#################################################
		# 配置ssl部分,如果是全局启用的话可以放在http块里面    #
		# 若想配置多级域名,并且不是通配符证书,请放server块中!#
		#################################################
		# 配置ssl证书,只要放在一个能找到的位置就好了
        ssl_certificate /etc/nginx/cert/xxx.com.pem;
        ssl_certificate_key /etc/nginx/cert/xxx.com.key;
        # 配置ssl验证相关
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;
        

		# log设置
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

		# 虚拟站点设置。include是为了方便配置,可以理解为将以下路径的文件内容复制到这里,说到底nginx读配置只是读这个文件。
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;	# 特别要注意这里,这个目录下其实都是软连接,实际配置在sites-available
}

虚拟站点配置文件夹:/etc/nginx/sites-available

这个文件夹用于配置虚拟站点,可以参考default文件来编写,但是写完并不表示启用,要在sites-enabled文件夹中添加软连接指向你写的新配置文件才代表启用。

default文件(默认配置)
# 只截取部分配置!!!!
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                try_files $uri $uri/ =404;
        }
}

虚拟站点启用文件夹:/etc/nginx/sites-enabled

这个文件夹里都是软连接,指向/etc/nginx/sites-available里的文件,若要启用一个站点则可以创建软连接,使用命令ln -s 软连接名称 /etc/nginx/sites-available/新虚拟站点配置文件。这样通过软连接管理站点是否启用,方便维护。

跳转方法一:rewrite

server {
        listen 80;	#监听ipv4
        listen [::]:80;	#监听ipv6
        server_name xxx.com www.xxx.com;	#虚拟主机域名
        rewrite ^(.*)$ https://$host$1 permanent;	#rewrite跳转
}

server {
        listen 443 ssl;
        listen [::]:443 ssl;
        
        server_name xxx.com www.xxx.com;
        root /var/www/xxx;

        index index.html index.htm index.nginx-debian.html;

        location / {
                try_files $uri $uri/ =404;
        }
}

跳转方法二:return 301

server {
        listen 80;	#监听ipv4
        listen [::]:80;	#监听ipv6
        server_name xxx.com www.xxx.com;	#虚拟主机域名
        return 301 https://$server_name$request_uri;	#return 301
}

server {
        listen 443 ssl;
        listen [::]:443 ssl;
        
        server_name xxx.com www.xxx.com;
        root /var/www/xxx;

        index index.html index.htm index.nginx-debian.html;

        location / {
                try_files $uri $uri/ =404;
        }
}

重启nginx

配置后需要重启nginx,博主之前用了nginx -s reload死活不成功,后面发现必须要用service nginx restart或者/etc/init.d/nginx restart,又或者nginx -s stop然后再调用nginx -c 配置文件启动nginx。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要实现nginx http自动跳转https,需要在nginx配置文件中添加以下代码: ``` server { listen 80; server_name yourdomain.com; return 301 https://$server_name$request_uri; } ``` 其中,yourdomain.com需要替换成你的域名。 这段代码的作用是监听80端口,当有http请求访问时,自动将请求重定向到443端口https协议。 添加完毕后,需要重新加载nginx配置文件,使其生效。可以使用以下命令: ``` sudo nginx -s reload ``` 这样,当用户访问你的网站时,如果使用http协议,会自动跳转https协议,保证网站的安全性。 ### 回答2: Nginx是一个非常流行的Web服务器和反向代理服务器。它可以用于许多用途,其中之一是将HTTP自动重定向到HTTPS。这是因为HTTPS是一个更安全的协议,可保护用户的隐私和敏感信息。 要实现HTTP自动重定向到HTTPS,必须进行以下操作: 1.在Nginx配置文件中添加HTTPS服务器块。这是必要的,因为HTTPS服务器需要证书和密钥来进行加密通信。可以在一台服务器上设置多个服务器块,每个服务器块可以具有不同的IP地址或端口。 2.在HTTP服务器块中添加重定向指令。有两种常用的重定向指令可以使用。一种是使用return指令,它将客户端的URL重定向到指定的URL。另一种是使用rewrite指令,它允许您对URL进行更复杂的重定向操作,包括更改QUERY_STRING和其他操作。 3.将HTTP服务器块更改为重定向到HTTPS服务器块。可以将所有的HTTP请求都重定向到HTTPS服务器块。这可以通过在HTTP服务器块中添加server_name指令来实现,该指令将包含匹配的主机名。然后可以使用重定向指令将客户端的URL重定向到对应的HTTPS服务器块。 4.配置HTTPS服务器块以使用SSL。必须使用Nginx的SSL模块来配置服务器块以使用SSL。这可以通过在块中添加ssl on指令来实现。还需要配置SSL证书和密钥。 完成上述步骤后,Nginx自动HTTP请求重定向到HTTPS。这可以确保在用户进行通信时保护敏感信息的安全性。 ### 回答3: Nginx是一款流行的Web服务器和反向代理服务器,它可以处理大量的HTTP请求和静态文件。许多网站都要求将HTTP请求自动转发到HTTPS,以确保网站的安全性。在此过程中,Nginx可以帮助我们实现HTTP自动跳转HTTPS。今天,我们将探讨如何在Nginx上实现HTTP自动跳转HTTPS。 要实现HTTP自动跳转HTTPS,我们需要在Nginx的服务器配置中添加以下代码: server { listen 80; server_name yourdomain.com; return 301 https://$server_name$request_uri; } 通过添加此代码段,我们可以在Nginx服务器中定义一个HTTP服务监听端口。当HTTP请求到达时,它将会自动转发到HTTPS。返回的“301”是一个重定向HTTP代码,它告诉浏览器当前请求被永久重定向到HTTPS。 您还可以使用以下代码实现HTTPHTTPS服务器的配置: server { listen 80; server_name yourdomain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /path/to/ssl.crt; ssl_certificate_key /path/to/ssl.key; # HTTPS server configuration } 在这个配置中,我们提供了两个服务器块,一个是HTTP服务器块,另一个是HTTPS服务器块。与前面的服务器配置段类似,此配置要求HTTP请求被自动重定向到HTTPS。 总结: 使用NginxHTTP请求自动重定向到HTTPS对网站安全至关重要。实现这一目标的最简单方法是在Nginx服务器的配置中定义HTTP服务器监听端口并使用“301”代码自动将请求转发到HTTPS。通过正确的配置和实现,您可以确保您的站点在网络中的安全性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值