Nginx no-www đến www và www đến no-www


497

Tôi đang sử dụng nginx trên đám mây Rackspace theo hướng dẫn và đã tìm kiếm trên mạng và cho đến nay không thể sắp xếp thứ này.

Tôi muốn www.mysite.com truy cập mysite.com như bình thường trong .htaccess vì SEO và các lý do khác.

/ Etc/nginx/sites-av Available / www.example.com.vhost cấu hình của tôi :

server {
       listen 80;
       server_name www.example.com example.com;
       root /var/www/www.example.com/web;

       if ($http_host != "www.example.com") {
                 rewrite ^ http://example.com$request_uri permanent;
       }

Tôi cũng đã thử

server {
       listen 80;
       server_name example.com;
       root /var/www/www.example.com/web;

       if ($http_host != "www.example.com") {
                 rewrite ^ http://example.com$request_uri permanent;
       }

Tôi cũng đã thử. Cả hai lần thử thứ hai đều đưa ra lỗi vòng lặp chuyển hướng.

if ($host = 'www.example.com' ) {
rewrite ^ http://example.com$uri permanent;
}

DNS của tôi được thiết lập theo tiêu chuẩn:

site.com 192.192.6.8 A type at 300 seconds
www.site.com 192.192.6.8 A type at 300 seconds

(ví dụ IP và thư mục đã được sử dụng cho các ví dụ và để giúp mọi người trong tương lai). Tôi sử dụng Ubuntu 11.


1
Tôi cảm thấy buộc phải nhận xét rằng nếu bạn đang làm việc với một trang web WordPress, hãy kiểm tra Dashboard > Settings > General Settingsvà đảm bảo rằng không có wwwURL Địa chỉ / Địa chỉ trang web WordPress nào. Bất kể bạn định cấu hình nginx của mình như thế nào, nếu bạn có www trong các URL này, nó sẽ được chuyển hướng đến một URL có www trong đó.
Abhinav Sood

Câu trả lời:


792

Giải pháp HTTP

Từ tài liệu này , "cách đúng đắn là xác định một máy chủ riêng cho example.org":

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

server {
    listen       80;
    server_name  www.example.com;
    ...
}

Giải pháp HTTPS

Đối với những người muốn một giải pháp bao gồm https://...

server {
        listen 80;
        server_name www.domain.com;
        # $scheme will get the http protocol
        # and 301 is best practice for tablet, phone, desktop and seo
        return 301 $scheme://domain.com$request_uri;
}

server {
        listen 80;
        server_name domain.com;
        # here goes the rest of your config file
        # example 
        location / {

            rewrite ^/cp/login?$ /cp/login.php last;
            # etc etc...

        }
}

Lưu ý: Ban đầu tôi chưa bao gồm https://trong giải pháp của mình vì chúng tôi sử dụng bộ cân bằng tải và máy chủ https: // của chúng tôi là máy chủ thanh toán SSL có lưu lượng truy cập cao: chúng tôi không trộn https: // và http: //.


Để kiểm tra phiên bản nginx, sử dụng nginx -v.

Tách www từ url bằng chuyển hướng nginx

server {
    server_name  www.domain.com;
    rewrite ^(.*) http://domain.com$1 permanent;
}

server {
    server_name  domain.com;
    #The rest of your configuration goes here#
}

Vì vậy, bạn cần phải có HAI mã máy chủ.

Thêm www vào url với chuyển hướng nginx

Nếu điều bạn cần là ngược lại, để chuyển hướng từ domain.com sang www.domain.com, bạn có thể sử dụng điều này:

server {
    server_name  domain.com;
    rewrite ^(.*) http://www.domain.com$1 permanent;
}

server {
    server_name  www.domain.com;
    #The rest of your configuration goes here#
}

Như bạn có thể tưởng tượng, đây chỉ là điều ngược lại và hoạt động giống như ví dụ đầu tiên. Bằng cách này, bạn không bị đánh dấu SEO, vì nó hoàn toàn chuyển hướng và di chuyển. Không WWW là bắt buộc và thư mục hiển thị!

Một số mã của tôi được hiển thị dưới đây để xem tốt hơn:

server {
    server_name  www.google.com;
    rewrite ^(.*) http://google.com$1 permanent;
}
server {
       listen 80;
       server_name google.com;
       index index.php index.html;
       ####
       # now pull the site from one directory #
       root /var/www/www.google.com/web;
       # done #
       location = /favicon.ico {
                log_not_found off;
                access_log off;
       }
}

3
@puk đánh giá cao nó. Nginx là tuyệt vời, nhưng tài liệu tốt luôn cập nhật với phiên bản máy chủ và thay đổi phần cứng hệ điều hành và máy chủ là khá mệt mỏi. Tài nguyên tốt nhất phục vụ tôi là howtoforge.com vì nó hỗ trợ các phiên bản đám mây RackSpace. Một số lệnh trên sẽ không hoạt động trong các phiên bản sau. Nhưng nginx / 0.8.54 này - tin tôi đi, máy chủ nginx tốt nhất) không cần nâng cấp hay cập nhật. Hoạt động tốt. 100.000 lượt truy cập duy nhất một ngày với 4200 giao dịch trung bình một ngày. Nginx là RAPID. như sử dụng một trang web không có lưu lượng truy cập.
TheBlackBenzKid

17
Viết lại của bạn sẽ trở thành trở lại, như trong return 301 $scheme://domain.com$request_uri;. Không cần phải nắm bắt bất kỳ mẫu nào, hãy xem cạm bẫy của Nginx
Roberto

4
@TheBlackBenzKid Xin lỗi, có thể tôi đã bỏ lỡ điều gì đó, nhưng giải pháp cập nhật không hoạt động. Đó là vì nghe 80 - với điều đó, bạn đang nói rằng chỉ HTTP phù hợp với điều này. Cần có nhiều cổng để lắng nghe nếu cùng một cấu hình được sử dụng cho HTTP và HTTPS ... Hoặc? Nhưng chắc chắn đã giúp tôi, +1. Cảm ơn đã trả lời. Chúc mừng.
tomis

3
@TheBlackBenzKid Đó chỉ là ghi chú. Tôi đã tìm ra giải pháp làm việc. Trong ví dụ của bạn, chỉ nên nghe 443 và hoàn thành công việc.
tomis

2
Trả lời sai. nó chuyển hướng tất cả các tên miền phụ đến www.
r3wt

398

Trên thực tế, bạn thậm chí không cần viết lại.

server {
    #listen 80 is default
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}

server {
    #listen 80 is default
    server_name example.com;
    ## here goes the rest of your conf...
}

Như câu trả lời của tôi đang ngày càng nhận được nhiều phiếu hơn nhưng cũng như trên. Bạn không bao giờ nên sử dụng một rewritetrong bối cảnh này. Tại sao? Bởi vì nginx phải xử lý và bắt đầu tìm kiếm. Nếu bạn sử dụng return(cần có trong bất kỳ phiên bản nginx nào), nó sẽ trực tiếp dừng thực thi. Điều này được ưa thích trong bất kỳ bối cảnh.

Chuyển hướng cả hai, không phải SSL và SSL sang đối tác không có www:

server {
    listen               80;
    listen               443 ssl;
    server_name          www.example.com;
    ssl_certificate      path/to/cert;
    ssl_certificate_key  path/to/key;

    return 301 $scheme://example.com$request_uri;
}

server {
    listen               80;
    listen               443 ssl;
    server_name          example.com;
    ssl_certificate      path/to/cert;
    ssl_certificate_key  path/to/key;

    # rest goes here...
}

Các $schemebiến sẽ chỉ chứa httpnếu máy chủ của bạn chỉ được nghe trên cổng 80 (mặc định) và lắng nghe lựa chọn không chứassl từ khóa. Không sử dụng biến sẽ không giúp bạn đạt được bất kỳ hiệu suất nào.

Lưu ý rằng bạn cần nhiều khối máy chủ hơn nữa nếu bạn sử dụng HSTS, vì các tiêu đề HSTS không nên được gửi qua các kết nối không được mã hóa. Do đó, bạn cần các khối máy chủ không được mã hóa với các chuyển hướng và các khối máy chủ được mã hóa với các chuyển hướng và các tiêu đề HSTS.

Chuyển hướng mọi thứ sang SSL (cấu hình cá nhân trên UNIX với IPv4, IPv6, SPDY, ...):

#
# Redirect all www to non-www
#
server {
    server_name          www.example.com;
    ssl_certificate      ssl/example.com/crt;
    ssl_certificate_key  ssl/example.com/key;
    listen               *:80;
    listen               *:443 ssl spdy;
    listen               [::]:80 ipv6only=on;
    listen               [::]:443 ssl spdy ipv6only=on;

    return 301 https://example.com$request_uri;
}

#
# Redirect all non-encrypted to encrypted
#
server {
    server_name          example.com;
    listen               *:80;
    listen               [::]:80;

    return 301 https://example.com$request_uri;
}

#
# There we go!
#
server {
    server_name          example.com;
    ssl_certificate      ssl/example.com/crt;
    ssl_certificate_key  ssl/example.com/key;
    listen               *:443 ssl spdy;
    listen               [::]:443 ssl spdy;

    # rest goes here...
}

Tôi đoán bạn có thể tưởng tượng các hợp chất khác với mẫu này bây giờ một mình.

Thêm cấu hình của tôi? Tới đâyở đây .


3
Chrome của bạn không thể truy cập tên miền www của bạn nếu bạn đang sử dụng HSTS. Vui lòng mở một câu hỏi mới với càng nhiều chi tiết càng tốt và tôi sẽ giúp bạn (bạn có thể đăng URL cho câu hỏi dưới dạng nhận xét tại đây).
Xác thịt

1
@F Meatgrinder Tôi đang cố gắng thực hiện cài đặt của mình nhưng gặp sự cố sau tại stackoverflow.com/questions/29451409/. Bạn có ý tưởng nào về cách làm cho nó hoạt động không?
YPCrumble

4
Trong khối thứ 2 "Chuyển hướng cả hai, không phải SSL và SSL sang đối tác không có www:", cả hai khối máy chủ nên có các chỉ thị SSL, vì trình duyệt cần xác minh chứng chỉ cho www.example.com trước khi chuyển hướng sang ví dụ .com.
Jeff Tsay

1
Tất nhiên, tôi đã thêm rằng cũng như một thông tin ngắn về HSTS.
F Meatgrinder 22/08/2015

1
@YPCrumble có, theo cách này RẤT NHIỀU vì chúng tôi không thực hiện kết hợp biểu thức chính quy trên mỗi yêu cầu. Chúng tôi chỉ chuyển hướng nếu chúng tôi biết rằng chúng tôi phải chuyển hướng. Không kiểm tra, không xác nhận, không có gì: chỉ cần chuyển hướng. =)
Xác thịt

37

Bạn có thể thấy rằng bạn muốn sử dụng cùng một cấu hình cho nhiều tên miền hơn.

Đoạn mã sau sẽ xóa www trước bất kỳ tên miền nào:

if ($host ~* ^www\.(.*)$) {
    rewrite / $scheme://$1 permanent;
}

7
Tôi thích cách này tốt hơn các khối máy chủ chuyên dụng. Thay đổi httpthành$scheme
ck_

2
Tốt hơn nhiều, không thể tin rằng rất nhiều tên miền mã hóa cứng sẽ thành cấu hình cho tác vụ này.
MrYellow

1
@Oli Liên kết đó không (kể từ hôm nay) đề cập đến hiệu suất mà là chúng không an toàn 100%. Nó có ghi "Những điều an toàn 100% duy nhất có thể được thực hiện bên trong nếu trong bối cảnh vị trí là: return ...rewrite ... last". Bất kỳ liên kết cập nhật đến các vấn đề hiệu suất?
Adam

1
Điều này đã không làm việc cho tôi. Giữ một lỗi trên trình duyệt nói phản hồi không hợp lệ.
Nico Brenner

1
Thật không may, tôi đã không tìm thấy một cách mà không có "nếu". Tôi sử dụng cùng một cấu hình cho nhiều tên miền, mã hóa tên miền không phải là một tùy chọn. Bất kỳ đề nghị / nhận xét được đánh giá cao!
Martin Höger

27

Bạn cần hai khối máy chủ.

Đặt chúng vào tập tin cấu hình của bạn, vd /etc/nginx/sites-available/sitename

Giả sử bạn quyết định lấy http://example.com làm địa chỉ chính để sử dụng.

Tập tin cấu hình của bạn sẽ trông như thế này:

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

        # this is the main server block
        # insert ALL other config or settings in this server block
}

Khối máy chủ đầu tiên sẽ giữ các hướng dẫn để chuyển hướng mọi yêu cầu có tiền tố 'www'. Nó lắng nghe các yêu cầu cho URL với tiền tố 'www' và chuyển hướng.

Nó không làm gì khác.

Khối máy chủ thứ hai sẽ giữ địa chỉ chính của bạn - URL bạn muốn sử dụng. Tất cả các thiết lập khác đi ở đây như thế root, index,location , vv Kiểm tra các tập tin mặc định cho các thiết lập khác mà bạn có thể bao gồm trong khối máy chủ.

Máy chủ cần hai bản ghi DNS A.

Name: @ IPAddress: your-ip-address (for the example.com URL)

Name: www IPAddress: your-ip-address (for the www.example.com URL)

Đối với ipv6, hãy tạo cặp bản ghi AAAA bằng địa chỉ-ipv6 của bạn.


23

Đây là cách thực hiện đối với nhiều tên máy chủ www đến không có www (Tôi đã sử dụng tên miền này cho tên miền phụ):

server {
        server_name 
             "~^www\.(sub1.example.com)$"
             "~^www\.(sub2.example.com)$"
             "~^www\.(sub3.example.com)$";
         return 301 $scheme://$1$request_uri ;
}

20
  1. Thực hành tốt nhất: tách riêng serverw / mã hóa cứngserver_name

Thực hành tốt nhất với nginx là sử dụng riêng servercho một chuyển hướng như thế này (không được chia sẻ vớiserver cấu hình chính của bạn), để mã hóa mọi thứ và không sử dụng biểu thức thông thường nào cả.

Cũng có thể cần phải mã hóa tên miền nếu bạn đang sử dụng HTTPS, bởi vì bạn phải biết trả trước những chứng chỉ nào bạn sẽ cung cấp.

server {
    server_name www.example.com;
    return  301 $scheme://example.com$request_uri;
}
server {
    server_name www.example.org;
    return  301 $scheme://example.org$request_uri;
}
server {
    server_name example.com example.org;
    # real configuration goes here
}

  1. Sử dụng biểu thức chính quy trong server_name

Nếu bạn có một số trang web và không quan tâm đến hiệu suất cao nhất, nhưng muốn mỗi một trong số chúng có chính sách tương tự liên quan đến www.tiền tố, thì bạn có thể sử dụng các biểu thức thông thường. Thực hành tốt nhất của việc sử dụng riêng biệt servervẫn sẽ đứng.

Lưu ý rằng giải pháp này trở nên khó khăn nếu bạn sử dụng https, vì sau đó bạn phải có một chứng chỉ duy nhất để bao gồm tất cả các tên miền của bạn nếu bạn muốn nó hoạt động chính xác.


non- wwwto wwww / regex trong một đĩa đơn dành riêng servercho tất cả các trang web:

server {
    server_name ~^(?!www\.)(?<domain>.+)$;
    return  301 $scheme://www.$domain$request_uri;
}

wwwđến non- wwww / regex trong một đĩa đơn dành riêng servercho tất cả các trang web:

server {
    server_name ~^www\.(?<domain>.+)$;
    return  301 $scheme://$domain$request_uri;
}

wwwđể không wwww / regex trong một chuyên dụngserver cho một số trang web:

Nó có thể là cần thiết để hạn chế regex để chỉ bao gồm một vài lĩnh vực, sau đó bạn có thể sử dụng một cái gì đó như thế này để chỉ phù hợp www.example.org, www.example.comwww.subdomain.example.net:

server {
    server_name ~^www\.(?<domain>(?:example\.org|example\.com|subdomain\.example\.net))$;
    return  301 $scheme://$domain$request_uri;
}

Kiểm tra biểu thức chính quy w / nginx

Bạn có thể kiểm tra regex hoạt động như mong đợi pcretesttrên hệ thống của mình, đây chính là pcrethư viện chính xác mà nginx của bạn sẽ sử dụng cho các biểu thức thông thường:

% pcretest 
PCRE version 8.35 2014-04-04

  re> #^www\.(?<domain>(?:example\.org|example\.com|subdomain\.example\.net))$#
data> test
No match
data> www.example.org
 0: www.example.org
 1: example.org
data> www.test.example.org
No match
data> www.example.com
 0: www.example.com
 1: example.com
data> www.subdomain.example.net
 0: www.subdomain.example.net
 1: subdomain.example.net
data> subdomain.example.net
No match
data> www.subdomain.example.net.
No match
data> 

Lưu ý rằng bạn không phải lo lắng về dấu chấm hoặc trường hợp, vì nginx đã xử lý nó, vì regex tên máy chủ của nginx khi tiêu đề "Máy chủ" có dấu chấm .


  1. Rắc iftrong server/ HTTPS hiện có :

Giải pháp cuối cùng này thường không được coi là thực tiễn tốt nhất, tuy nhiên, nó vẫn hoạt động và thực hiện công việc.

Trên thực tế, nếu bạn đang sử dụng HTTPS, thì giải pháp cuối cùng này có thể sẽ dễ bảo trì hơn, vì bạn sẽ không phải sao chép-dán toàn bộ các lệnh ssl giữa các serverđịnh nghĩa khác nhau và thay vào đó chỉ có thể đặt đoạn trích vào các máy chủ cần thiết, giúp dễ dàng gỡ lỗi và duy trì trang web của bạn.


không wwwđến www:

if ($host ~ ^(?!www\.)(?<domain>.+)$) {
    return  301 $scheme://www.$domain$request_uri;
}

wwwđể phi www:

if ($host ~ ^www\.(?<domain>.+)$) {
    return  301 $scheme://$domain$request_uri;
}

mã hóa một miền ưa thích duy nhất

Nếu bạn muốn có hiệu suất cao hơn một chút, cũng như tính nhất quán giữa nhiều tên miền mà một tên miền servercó thể sử dụng, thì vẫn có thể có ý nghĩa để mã hóa rõ ràng một tên miền ưa thích duy nhất:

if ($host != "example.com") {
    return  301 $scheme://example.com$request_uri;
}

Người giới thiệu:


16

Giải pháp này xuất phát từ kinh nghiệm cá nhân của tôi. Chúng tôi đã sử dụng một số nhóm Amazon S3 và một máy chủ để chuyển hướng non-wwwđến wwwtên miền để khớp với chính sách tiêu đề "Máy chủ" của S3 .

Tôi đã sử dụng cấu hình sau cho máy chủ nginx :

server {
    listen 80;
    server_name ~^(?!www\.)(?<domain>.+)$;
    return 301 $scheme://www.$domain$request_uri;
}

Điều này khớp với tất cả các tên miền được trỏ đến máy chủ bắt đầu bằng bất cứ thứ gì ngoại trừ www.và chuyển hướng đến www.<domain>. Theo cách tương tự, bạn có thể thực hiện chuyển hướng ngược lại từ wwwđếnnon-www .


Còn https thì sao? lưu ý: https CẦN chứng chỉ
Toskan

Hoàn toàn không có vấn đề gì với HTTPS ở đây. Sau khi listen 80bạn cần thêm listen 443 sslvà sau đó ssl_certificatessl_certificate_keychỉ thị.
VisioN

ngày nay không ai sử dụng http. Tôi đã đọc một hướng dẫn được liệt kê hàng đầu trong google cho thấy ví dụ của bạn chỉ với dòng được thêm listen 443 ssl với chứng nhận bị thiếu. Điều đó sẽ không làm việc và gây ra một số đau đầu nghiêm trọng.
Toskan

Tôi không biết bạn đang nói về hướng dẫn nào. Tôi có cấu hình này làm việc thành công trong gần ba năm. Năm ngoái tôi đã thêm hỗ trợ cho SSL và nó hoạt động như mong đợi. Và tất nhiên bạn cần phải có chứng chỉ với khóa riêng trong tay.
VisioN

Vì vậy, điều này sẽ ghi đè tất cả các tên miền phụ ngoại trừ www, đúng không?
Nhà siêu âm

15

Tôi đã kết hợp tốt nhất tất cả các câu trả lời đơn giản, không có tên miền được mã hóa cứng.

301 chuyển hướng vĩnh viễn từ không www sang www (HTTP hoặc HTTPS):

server {
    if ($host !~ ^www\.) {
        rewrite ^ $scheme://www.$host$request_uri permanent;
    }

    # Regular location configs...
}

Nếu bạn thích chuyển hướng không HTTPS, không www sang HTTPS, chuyển hướng www cùng một lúc:

server {
    listen 80;

    if ($host !~ ^www\.) {
        rewrite ^ https://www.$host$request_uri permanent;
    }

    rewrite ^ https://$host$request_uri permanent;
}

11

Chuyển hướng không www sang www

Đối với tên miền đơn:

server {
        server_name example.com;
        return 301 $scheme://www.example.com$request_uri;
}

Đối với tất cả các tên miền:

server {
        server_name "~^(?!www\.).*" ;
        return 301 $scheme://www.$host$request_uri;
}

Chuyển hướng www sang không www cho một tên miền:

server {
        server_name www.example.com;
        return 301 $scheme://example.com$request_uri;
}

Đối với tất cả các tên miền:

server {
         server_name "~^www\.(.*)$" ;
         return 301 $scheme://$1$request_uri ;
}

Bạn có thể cung cấp sự khác biệt giữa 80443?
Hassan Baig

1
Nó dường như hoạt động mà không có listenchỉ thị cho tôi (nginx 1.4.6).
Ibrahim

11

thử cái này

    if ($host !~* ^www\.){
        rewrite ^(.*)$ https://www.yoursite.com$1;
    }

Cách khác: Nginx no-www đến www

server {
  listen       80;
  server_name  yoursite.com;
  root /path/;
  index index.php;
  return       301 https://www.yoursite.com$request_uri;
}

và www đến không-www

server {
  listen       80;
  server_name  www.yoursite.com;
  root /path/;
  index index.php;
  return       301 https://yoursite.com$request_uri;
}

Tại sao các tác giả cung cấp một câu lệnh if trong nginx và sau đó nói với mọi người để tránh nó? Âm thanh flippant với tôi.
Greg Smethells 30/03/2015

4
Có tuyên bố "NẾU ở vị trí là xấu xa". Bạn có thể đặt an toàn nếu vào khối máy chủ của mình
Kukunin

Trích dẫn trực tiếp từ liên kết trên ... Những điều an toàn 100% duy nhất có thể được thực hiện bên trong nếu trong bối cảnh vị trí là: return ...; viết lại ... lần cuối;
Justin E

8

Định dạng duy nhất:

server {
  listen 80;
  server_name "~^www\.(.*)$" ;
  return 301 https://$1$request_uri ;
}

1
Bạn có thể làm cho nó chung chung bằng cách viết nó theo cách này: server { server_name "~^www\.(.*)$" ; return 301 $scheme://$1$request_uri ; }
Ramast 29/07/2015

5
location / { 
    if ($http_host !~ "^www.domain.com"){ 
        rewrite ^(.*)$ $scheme://www.domain.com/$1 redirect; 
    } 
}

1
$scheme://www.domain.com$1để tránh cú chém kép
karimhossenbux

3

không chắc chắn nếu có ai chú ý rằng có thể đúng khi trả về 301 nhưng trình duyệt bị sặc khi thực hiện

rewrite ^(.*)$ https://yoursite.com$1; 

nhanh hơn:

return 301 $scheme://yoursite.com$request_uri;


1
Nhận xét của tôi đã được chuyển đến trình duyệt không hiệu quả về phía nginx! với một chuyển hướng trình duyệt thực hiện 2 yêu cầu so với 1 yêu cầu khi viết lại
steven

2

Blog ma

để làm cho phương thức được đề xuất nginx return 301 $scheme://example.com$request_uri;hoạt động với Ghost, bạn sẽ cần thêm vào khối máy chủ chính của mình:

proxy_set_header    X-Real-IP           $remote_addr;
proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
proxy_set_header    Host                $http_host;
proxy_set_header    X-Forwarded-Proto   $scheme;
proxy_set_header    X-NginX-Proxy       true;

proxy_pass_header   X-CSRF-TOKEN;
proxy_buffering     off;
proxy_redirect      off;  


0
if ($host ~* ^www.example.com$) {
    return 301 $scheme://example.com$request_uri;
}

-6

Nếu bạn gặp sự cố khi làm việc này, bạn có thể cần thêm địa chỉ IP của máy chủ của mình. Ví dụ:

server {
listen XXX.XXX.XXX.XXX:80;
listen XXX.XXX.XXX.XXX:443 ssl;
ssl_certificate /var/www/example.com/web/ssl/example.com.crt;
ssl_certificate_key /var/www/example.com/web/ssl/example.com.key;
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}

trong đó XXX.XXX.XXX.XXX là địa chỉ IP (rõ ràng).

Lưu ý: ssl crt và vị trí khóa phải được xác định để chuyển hướng đúng yêu cầu https

Đừng quên khởi động lại nginx sau khi thực hiện các thay đổi:

service nginx restart

3
/etc/init.d/nginx reloadbạn cũng có thể reloadmáy chủ không gây ra bất kỳ thời gian chết nào.
TheBlackBenzKid
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.