a subdomain and 3rd party domain will have almost identical SEO benefit. They are considered different domains by google. So if you have a subdomain of your regular domain (blog or not) google sees it as a totally different site. If you are trying to get the blog to add value to the main domain then subdomains or 3rd party domains are propbably not what you want, and instead you want a directory for your blog. If you are using a 3rd party blogging service (blogger, wordpress.com hosted) then your only choice is to reverse proxy the /blog/ directory of your site to pull this content from their servers.
Works like a charm in NginX and Blogger. Let me know if that is what you want and I will post a config sample to reverse proxy.
# LOCATION >>
# MYSITE.com/blog (Blogger blog.mysite.com) ****
location ~* ^/blog/(.*) {
# Variables so we can redirect later
set $blog_url 'blog.mysite.com';
set $url_full '$1';
# Update Variable So We Can Catch SSL
set $force_SSL "${force_SSL}XX";
if ($force_SSL = HTTPSWWWXX) {
return 302 http://www.mysite.com/blog/$url_full;
#rewrite ^ http:/$host$request_uri permanent;
break;
}
# Turn off SSL for Blog
if ($ssl_protocol != "") {
#rewrite ^ http://www.mysite.com$request_uri? permanent;
return 302 http://www.mysite.com/blog/$url_full;
break;
}
# Make sure blog is only available under www domain
if ( $host != 'www.mysite.com' ) {
rewrite ^/(.*)$ http://www.mysite.com/$1 permanent;
break;
}
# Rewrite outbound text to new url | rewrite https for image sources
subs_filter blog.mysite.com/ www.mysite.com/blog/;
# HEADERS
more_set_headers "Server: BLOGGER";
more_clear_headers 'Cache-Control-*';
more_clear_headers 'Alternate-Protocol*';
add_header Cache-Control "public, max-age=7200";
etag on;
expires 2h;
# Cache File Information
open_file_cache max=1000 inactive=500s;
open_file_cache_valid 600s;
open_file_cache_errors on;
# Gzip
gzip on;
gzip_vary on;
gzip_http_version 1.0;
gzip_disable "MSIE [1-6].(?!.*SV1)";
gzip_min_length 200;
gzip_buffers 64 8k;
gzip_comp_level 3;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
# PROXY SETTINGS
proxy_set_header Accept-Encoding "";
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Host $blog_url;
proxy_set_header Authorization '';
proxy_hide_header Set-Cookie;
proxy_hide_header Cache-Control;
proxy_ignore_headers "Set-Cookie";
proxy_buffering off;
resolver 8.8.4.4 8.8.8.8 valid=300s;
resolver_timeout 10s;
proxy_pass http://$blog_url/$url_full;
proxy_temp_path /usr/share/nginx/temp;
# PROXY CACHING
proxy_cache STATIC;
proxy_cache_valid 200 302 1d;
proxy_cache_valid 404 1m;
proxy_cache_use_stale error timeout invalid_header updating
http_500 http_502 http_503 http_504;
break;
}