如何为所有nginx网站重定向http到https

要重定向所有Nginx托管网站的流量,请在配置文件中输入以下代码:

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	server_name _;
	return 301 https://$host$request_uri;
}

它使用变量$host,因此它可以应用于nginx托管的任何URL。

如何为单个nginx网站重定向http到https

我们需要更改Nginx Server配置文件以重定向流量。

$sudo nano /etc/nginx/sites-available/your_conf_file

在HTTP配置部分下,插入以下301重定向代码。

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}

将传入连接到“example.com”和“www.example.com”的请求,重定向到https下相同的url。

结构看起来像这样:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}
server {
    listen              443 ssl;
    server_name         example.com;
    ssl_certificate     example.com.crt;
    ssl_certificate_key example.com.key;
    # 其他配置
}

但是如何重定向 https://www.example.com呢?
我们需要另一个重定向块,将www重定向到非www下:

server {
	# redirect all HTTP to HTTPS
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}
server {
	# redirect HTTPS www.
    listen              443 ssl;
    server_name         www.example.com;
    return 301 https://example.com$request_uri;
}
server {
    listen              443 ssl;
    server_name         example.com;
    ssl_certificate     example.com.crt;
    ssl_certificate_key example.com.key;
    # other configuration
}

使用systemctl命令重新启动或者重新加载nginx,以便使新的更改生效。

$sudo systemctl reload nginx
如何使用nginx将所有流量从http重定向到https
日期:2020-07-07 20:57:17 来源:oir作者:oir