Разница между rpm -ivh и yum install

Предположим, я собираюсь установить пакет, в чем разница между этими двумя командами: rpm -ivh и yum install

тот же вопрос, например, с rpm -Uvh и yum update <пакет> server {# сообщает, какой порт слушает этот сервер listen [::]: 80; слушать 80; ...

Я использовал этот блок для перенаправления IP-адреса веб-сайта на фактический URL-адрес:

# IP to domain redirect
server {
        # tell on which port this server listens
        listen [::]:80;
        listen 80;

        # listen on the IP
        server_name xx.xx.xx.xxx;

        # and redirect to the domain
        return 301 $scheme://example.com$request_uri;
}

Однако я решил удалить его, но перенаправление не исчезло. Я знаю, что мой браузер уже жестко кэшировал это перенаправление, и я не увижу изменений, поэтому я использовал curl -I xx.xx.xx.xxx через SSH, чтобы увидеть ответ, где xx .xx.xx.xxx - это общедоступный IP-адрес сервера:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 10 Jan 2017 14:06:01 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: http://example.com/
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-UA-Compatible: IE=Edge

Как видите, перенаправление все еще существует. Кроме того, я отправил эхо-запрос IP из сторонних источников, и они подтвердили, что 301 редирект существует. Так что я действительно не понимаю, как это возможно, когда нет правила перенаправления.

Другие вещи, которые я сделал:

  • Я проверил свои iptables, и нет никаких цепочек PREROUTING любого типа.
  • Я не забыл перезапустить Nginx и даже перезагрузил сервер.
  • Так как я ' cache.
  • Поскольку сервер находится за CloudFlare, я очистил весь кеш на их конец тоже. Но очевидно, что ответ 301 выше не поступают из CloudFlare, потому что они устанавливают легко узнаваемые заголовки и это не их.

Вот Nginx conf. Очевидно, что в процессе производства этот блок сегментирован на несколько файлов, но для ответа на этот вопрос я вставляю его в один блок.

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
        worker_connections 1024;
        multi_accept on;
}

worker_rlimit_nofile 10000;

http {
        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;

        client_body_timeout 12;
        client_header_timeout 12;
        keepalive_timeout 15;
        send_timeout 10;

        open_file_cache          max=10000 inactive=5m;
        open_file_cache_valid    2m;
        open_file_cache_min_uses 1;
        open_file_cache_errors   on;

        types_hash_max_size 2048;
        server_tokens off;

        server_names_hash_bucket_size 64;
        server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";

        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_min_length 256;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

        ##
        # Virtual Host Configs
        ##

        fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:800m inactive=4h;
        fastcgi_cache_key "$scheme$request_method$host$request_uri";
        fastcgi_cache_use_stale error timeout invalid_header http_500;
        fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
        add_header X-Cache $upstream_cache_status;
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header "X-UA-Compatible" "IE=Edge";

        # www to non-www redirect
        server {
                # don't forget to tell on which port this server listens
                listen [::]:80;
                listen 80;

                # listen on the 'www' host
                server_name www.example.com;

                # and redirect to the non-www host (declared below)
                return 301 $scheme://example.com$request_uri;
        }

        # Begin the server config
        server {
                listen [::]:80;
                listen 80;

                # The host name to respond to
                server_name example.com;

                # The location of access and error logs (symlinked to /var/www/example.com/logs/)
                access_log /var/log/nginx/example.com.access.log;
                error_log /var/log/nginx/example.com.error.log;

                # Root for static files
                root /var/www/example.com/htdocs;
                index index.php index.html index.htm;

                # Find and replace CDN urls
                subs_filter example.com/wp-content/uploads/         cdn.example.com/wp-content/uploads/;
                subs_filter example.com/wp-content/themes/          cdn.example.com/wp-content/themes/;
                subs_filter example.com/wp-content/plugins/         cdn.example.com/wp-content/plugins/;
                subs_filter example.com/apple-touch-icon.png        cdn.example.com/apple-touch-icon.png;

                # Cache every page
                set $skip_cache 0;

                # POST requests and urls with a query string should always go to PHP
                if ($request_method = POST) {
                        set $skip_cache 1;
                }

                # Don't cache queries
                if ($query_string) {
                        set $skip_cache 1;
                }

                # Cache only these queries
                if ($query_string ~* "orderby|r_sortby|results") {
                        set $skip_cache 0;
                }

                # Don't cache uris containing the following segments
                if ($request_uri ~* "/wp-admin/|/xmlrpc.php|/opcache.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
                        set $skip_cache 1;
                }

                # Don't use the cache for logged in users or recent commenters
                if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
                        set $skip_cache 1;
                }

                # Don't log robots.txt and favicon.ico
                location ~ /(robots.txt|favicon.ico) { 
                        access_log off; 
                        log_not_found off; 
                }

                # Prevent clients from accessing hidden files (starting with a dot) - .htaccess or .htpasswd
                location ~ /\. { 
                        deny all; 
                        access_log off; 
                        log_not_found off; 
                }

                # Prevent clients from accessing backup/config/source files
                location ~* (?:\.(?:bak|config|sql|fla|psd|ini|log|sh|inc|swp|dist)|~)$ { 
                        deny all; 
                        access_log off;
                        log_not_found off;
                }

                # Don't allow access to files in /wp-admin/includes folder
                location ~* /wp-admin/includes { 
                        deny all;
                        access_log off;
                        log_not_found off;
                }

                # Don't allow php execution in wp-includes folder
                location ~* /wp-includes/.*.php$ {
                        deny all;
                        access_log off;
                        log_not_found off;
                }

                # Don't allow php execution in wp-content folder
                location ~* /wp-content/.*.php$ {
                        deny all;
                        access_log off;
                        log_not_found off;
                }

                # Don't allow php execution in uploads and files folders
                location ~* /(?:uploads|files)/.*\.php$ { 
                        deny all; 
                        access_log off;
                        log_not_found off;
                }

                # Deny access to XML-RPC requests
                # location = /xmlrpc.php {
                #       deny all;
                #       access_log off;
                #       log_not_found off;
                # }

                # Deny access to sensitive files
                location ~ /(wp-config.php|install.php|readme.html|licence.txt) { 
                        deny all;
                        access_log off;
                        log_not_found off;
                }

                # Redirect feed to FeedBurner
                if ($http_user_agent !~ "FeedBurner|FeedValidator") {
                        rewrite ^/feed/?.*$ http://feeds.example.com/example redirect;
                }

                # Strip/Redirect these queries
                if ($query_string ~* "fb_xd_fragment|fb_action_ids|iframe") {
                        rewrite ^(.*)$ $1? redirect;
                }

                rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml$ "/index.php?xml_sitemap=params=$2" last;
                rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml\.gz$ "/index.php?xml_sitemap=params=$2;zip=true" last;
                rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html$ "/index.php?xml_sitemap=params=$2;html=true" last;
                rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html.gz$ "/index.php?xml_sitemap=params=$2;html=true;zip=true" last;

                location / {
                        try_files $uri $uri/ /index.php?$args;
                }

                location ~ \.php$ {
                        # try_files $uri =404;
                        # try_files $uri =404 /index.php?$args;
                        try_files $uri /index.php?$args;
                        fastcgi_split_path_info ^(.+\.php)(/.+)$;

                        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                        include fastcgi_params;

                        # Combat (110: Connection timed out) while reading response header from upstream
                        fastcgi_read_timeout 120;

                        fastcgi_cache_bypass $skip_cache;
                        fastcgi_no_cache $skip_cache;

                        fastcgi_cache WORDPRESS;
                        fastcgi_cache_valid 4h;

                        # combat error 'upstream sent too big header...' 
                        fastcgi_buffers 32 64k;
                        fastcgi_buffer_size 64k;
                }

                # Purge ULR only within localhost
                location ~ /purge(/.*) {
                        allow 127.0.0.1;
                        deny all;
                        fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
                }       

                # cache.appcache, your document html and data
                location ~* \.(?:manifest|appcache|html?|xml|json)$ {
                        expires -1;
                }

                # Feed
                location ~* \.(?:rss|atom)$ {
                        add_header Pragma public;
                        add_header Cache-Control "public";
                        expires 4h;
                }

                # Media: images, icons, video, audio, HTC, CSS, Javascript, and WebFonts
                location ~ \.(css|js|htc|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
                        access_log off;
                        log_not_found off;
                        add_header Pragma public;
                        add_header Cache-Control "public";
                        expires max;
                }
        }

        server {
                listen 127.0.0.1:80;
                server_name 127.0.0.1;
                location /nginx_status {
                        stub_status on;
                        access_log off;
                        allow 127.0.0.1;
                        deny all;
                }
        }
}

Я также сделал curl -I 127.1 и получил следующий ответ:

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 11 Jan 2017 14:09:08 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 26 Apr 2016 13:31:19 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: "571f6da7-264"
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-UA-Compatible: IE=Edge
Accept-Ranges: bytes

# Тест 1. Посмотрите, что произойдет, если вы удалите директиву 301 для других URL-адресов

  1. Я перенаправил один несуществующий тестовый URL-адрес на реальный URL-адрес через Nginx конф. Я перезагрузил Nginx. Я посетил тестовый URL и, сделав это, я кэшировал перенаправление в браузер и, вероятно, в CloudFlare и FastCGI Cache (то есть если FastCGI даже кеширует перенаправление). После этого я скрутил этот тестовый URL из SSH и получил 301 ответ. Теперь у меня есть один пример надежного перенаправления.

  2. Затем я удалил перенаправление из конфигурации Nginx, перезагрузил Nginx и посетил тестовый URL через браузер. Перенаправление все еще существует. Однако, когда я свернул тестовый URL-адрес через SSH, я не получил перенаправления, но правильно Состояние 404 Not Found . Перенаправление на уровне сервера Nginx пропало после удаления кода перенаправления из конфигурации nginx

# Тест 2: Измените перенаправление общедоступного IP на 302

Я вернул директиву перенаправления IP-to-domain в Nginx conf, но на этот раз с возвратом 302.

# IP to domain redirect
server {
        # tell on which port this server listens
        listen [::]:80;
        listen 80;

        # listen on the IP
        server_name xx.xx.xx.xxx;

        # and redirect to the domain
        return 302 $scheme://example.com$request_uri;
}

Я перезагрузил Nginx и скрутил IP. Я был удивлен, увидев ответ 302 перемещено временно :

HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Thu, 12 Jan 2017 14:46:49 GMT
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
Location: http://example.com/
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-UA-Compatible: IE=Edge

После полного удаления этой самой директивы и перезагрузки Nginx ответ через CURL вернулся к 301 перемещен навсегда .

Это test сообщает мне, что проблема, вероятно, не в кешировании . Где-то в файлах conf или в архитектуре сервера в целом ДОЛЖНО быть какое-то другое правило, которое делает общедоступный IP-адрес на 301.

# Тест 3: Переведите сайт в режим разработки в CloudFlare и очистите весь кеш.

I ' Я перевел сайт в режим разработки в CF и очистил все. Я выполнял curl как с локального компьютера в той же сети, так и с домашнего компьютера. В обоих случаях ответ был 301.

# Тест 4: Проверить, перенаправляет ли также ipv6.

Я выполнил curl на публичный ipv6 сервера.

curl -I -g "http://[server:public:ipv6:here]/"

Ответ: 301 Moved Permanently указывая на домен веб-сайта, что еще более загадочно и почти невероятно. Это перенаправление ipv6 никогда не устанавливалось с моей стороны, если только блок сервера перенаправления, опубликованный в начале этого вопроса, также не включает перенаправление ipv6.

Есть мысли?

-1
задан 12 January 2017 в 23:07
2 ответа

Из-за результата curl 127.1 , который вы протестировали и упомянули в своем вопросе, вы получаете код состояния HTTP 200 - при локальном использовании curl и при использовании 127.1 вместо вашего общедоступного IP-адреса.

Причина, по которой вы получаете код состояния 200 локально, заключается в том, что вы могли успешно удалить строку перенаправления 301, и ваш NGINX работает нормально после перезапуска демона. Так что не беспокойтесь о NGINX, проблема в другом, кэширующем перенаправление.

Как узнать, что является причиной проблемы и откуда она?

Проблемы могут быть вызваны двумя причинами - в зависимости от того, используете ли вы свои собственные серверы или используете VPS, предоставленные кем-то вроде GoDaddy, OVH и т. Д.:

  1. Что-то в вашей собственной архитектуре кэширует шансы и дерьмо
  2. Что-то в вашем VPS-провайдере кеширует шансы и дерьмо

Если у вас несколько серверов, вы можете использовать следующие шаги, чтобы найти выясните, какая из указанных возможностей является причиной, и если вы этого не сделаете, я рекомендую вам связаться с провайдером, или, если вы вообще не используете VPS и используете свои собственные серверы, проверьте, используете ли вы что-то вроде прокси , Облачные сервисы, кэширующий сервер или что-то еще, что может кэшировать данные - (Учтите, что причина может быть вызвана обеими указанными возможностями) ↴

  1. Войдите через SSH на один из других серверов в той же VLAN, которой вы владеете, например, ваш сервер хранения.

  2. Предположите, что ваше хранилище использует 192.168.1.122, а ваш веб-сервер использует 192.168.1.125 в качестве своего частного IP-адреса.

  3. На сервере хранилища используйте curl 192.168.1.125 , чтобы проверить, используете ли вы все еще получается 200, или вы получаете 301.

  4. Если 301, это что-то в вашей архитектуре, которое кэширует, это может быть какая-то служба или другие серверы, которыми вы можете владеть, например, LoadBalancer.

  5. А если вы получаете 200, это не ваша архитектура, поэтому обратитесь к своему провайдеру.

Какова причина проблемы с кодом состояния 301?

Перенаправление 301 называется ПОСТОЯННОЕ Перенаправление ! Таким образом, все, кто его получает, включая большинство доступных сегодня браузеров, будут считать его ПОСТОЯННЫМ, пока срок его действия не истечет! Это ожидаемая вещь, и ничего странного не происходит, это природа ПОСТОЯННОЙ ВЕЩИ!

301 - улица с односторонним движением.

ЗАКЛЮЧЕНИЕ:

НИКОГДА, НИКОГДА не используйте постоянные вещи, ЕСЛИ вы не на 100% - лично сказал бы 500% - конечно! Где-то вроде Google, Apple, RedHat и других крупных компаний и производителей можно использовать 301, поскольку они знают, что делают, и владеют большинством технологий, которые все будут использовать, и ТАКЖЕ они знают, как будет осуществляться их план. быть в ближайшие 5 лет. Вы можете использовать 301 для простого перенаправления, которое вы можете использовать каждый день, как то, для чего вы его использовали (с www на не-www). Но никогда не используйте его постоянно, пока не получите уверенность относительно следующих пяти лет вашего проекта - или хотя бы двух лет.

Надеюсь, вы скоро решите свою проблему, и я надеюсь, что смогу помочь вам с ответом.

Ура, дружище.

1
ответ дан 5 December 2019 в 19:44

вы можете использовать постоянную переадресацию каждый раз. для постоянного или удаления перенаправления просто удалите строку оператора перенаправления.

Если у вас есть такой домен, как ci.com и вы будете перенаправлять на laravel.com

и вы удалите оператор перенаправления, вы откроете браузер, вы все равно откроете страницу перенаправления. это потому, что браузер кэшировал.

попробуйте использовать curl, и он покажет домен по умолчанию, потому что curl не кэшируется.

Заключение удалить кеш в браузере

-1
ответ дан 19 September 2020 в 14:42

Теги

Похожие вопросы