Console9 Wiki
  • Articles
    • Ansible
      • Ansible best practices
      • Ansible explanations
        • Ansible vs Terraform: when to use which
      • Ansible how-to guides
        • How to deploy files with Ansible templates
        • How to set up Ansible inventory for multiple environments
        • How to use Ansible Vault for secret management
      • Ansible playbook directives and modules reference
      • Ansible command snippets
      • Ansible troubleshooting
        • Ansible: Permission denied
        • Ansible: UNREACHABLE host
      • Ansible tutorials
        • Ansible tutorial: automate server setup from scratch
    • Apache HTTP Server
      • .htaccess
        • .htaccess best practices
        • .htaccess explanations
        • .htaccess how-to guides
          • How to set up authentication with .htaccess
          • How to locate the .htaccess file
        • .htaccess snippets
        • .htaccess troubleshooting
          • Apache .htaccess: 403 Forbidden
          • Apache .htaccess: 500 Internal Server Error
        • .htaccess tutorials
    • awk
      • awk explanations
        • awk vs sed vs grep: when to use which
      • awk how-to guides
        • How to count occurrences with awk
        • How to extract columns from CSV files with awk
        • How to parse Nginx access logs with awk
      • awk built-in variables and functions reference
      • awk command snippets
      • awk troubleshooting
        • awk: syntax error at source line
        • awk: wrong output from incorrect field separator
    • BeautifulSoup (bs4)
      • BeautifulSoup best practices
      • BeautifulSoup explanations
      • BeautifulSoup snippets
      • BeautifulSoup troubleshooting
      • BeautifulSoup tutorials
        • BeautifulSoup tutorial: scrape authenticated pages with session cookies
        • BeautifulSoup tutorial: scrape e-commerce product data to CSV
        • BeautifulSoup tutorial: scrape a website for links, titles, and navigation
    • Certbot
      • Certbot how-to guides
        • How to set up automatic certificate renewal with Certbot
        • How to issue an SSL certificate with Certbot for Apache
        • How to issue an SSL certificate with Certbot for Nginx
        • How to issue a wildcard SSL certificate with Certbot DNS challenge
      • Certbot troubleshooting
        • Certbot: Some challenges have failed
        • Certbot: Connection refused during ACME challenge
        • Certbot: The requested nginx plugin does not appear to be installed
        • Certbot: Certificate not yet due for renewal
        • Certbot: Too many certificates already issued
    • CORS (Cross-Origin Resource Sharing)
      • CORS best practices
      • CORS how-to guides
        • How to configure CORS on Amazon S3
        • How to configure CORS on Apache HTTP Server
        • How to configure CORS on Nginx
        • How to configure CORS in Node.js with Express
        • How to configure CORS in PHP
        • How to configure CORS in Python Django
        • How to configure CORS in Python Flask
      • CORS headers reference
      • CORS troubleshooting
        • CORS: Cross origin requests are only supported for HTTP
        • CORS: No 'Access-Control-Allow-Origin' header is present on the requested resource
        • CORS: Origin is not allowed by Access-Control-Allow-Origin
      • CORS tutorials
        • CORS tutorial: How Cross-Origin Resource Sharing works
    • Crontab
      • Crontab how-to guides
        • How to schedule a script with crontab
      • Crontab expression reference
      • Crontab troubleshooting
        • Crontab: job not running
    • curl
      • curl explanations
        • curl vs wget: when to use which
      • curl how-to guides
        • How to send authenticated requests with curl
        • How to follow redirects with curl
        • How to use curl with a proxy server
        • How to upload a file with curl
      • curl flags and options reference
      • curl command snippets
      • curl troubleshooting
        • curl: (7) Failed to connect — Connection refused
        • curl: (56) Recv failure: Connection reset by peer
        • curl: (28) Operation timed out
        • curl: (60) SSL certificate problem: unable to get local issuer certificate
    • dig
      • dig Explanations
      • dig How-To Guides
        • How to Set Default Options with the .digrc File
        • How to Trace the DNS Delegation Path with dig
        • How to Look Up a Domain by IP Address with dig
        • How to Find a Domain IP Address with dig
        • How to Query a Domain Using a Specific DNS Server with dig
        • How to Query DNS Records with dig
      • dig Command Reference
      • dig Command Snippets
    • Docker
      • Docker explanations
        • Docker volumes vs bind mounts: when to use which
      • Docker how-to guides
        • How to debug a crashing Docker container
        • How to fix Docker bypassing UFW firewall rules
        • How to persist MySQL data with Docker volumes
        • How to run Nginx with Docker and Docker Compose
      • Docker troubleshooting
        • Docker: bind mount permission denied
        • Docker Compose: depends_on does not wait for service to be ready
        • Docker: network not found
        • Docker: no space left on device
        • Docker: permission denied while trying to connect to the Docker daemon socket
        • Docker: port is already allocated
    • Fail2Ban
      • Fail2Ban best practices
      • Fail2Ban how-to guides
        • How to configure Fail2Ban with UFW
        • How to create a custom Fail2Ban filter
        • How to protect Nginx with a Fail2Ban jail
        • How to whitelist IPs in Fail2Ban
      • Fail2Ban jail.local directives reference
      • Fail2Ban command snippets
      • Fail2Ban troubleshooting
        • Fail2Ban: bans not blocking traffic
        • Fail2Ban: iptables not found
        • Fail2Ban: locked out of own server
        • Fail2Ban: not detecting failed logins
      • Fail2Ban tutorials
        • Fail2Ban tutorial: install and configure from scratch
    • Git
      • Git explanations
        • Git rebase vs merge: when to use which
      • Git how-to guides
        • How to use .gitignore to exclude files
        • How to resolve a merge conflict in Git
        • How to revert a commit in Git
        • How to track server configs with Git
      • Git commands and flags reference
      • Git command snippets
      • Git troubleshooting
        • Git: HEAD detached at commit
        • Git: error: failed to push some refs
        • Git: CONFLICT (content): Merge conflict in file
        • Git: fatal: not a git repository
      • Git tutorials
        • Git tutorial: version control for sysadmins
    • grep
      • grep explanations
        • grep vs egrep vs fgrep vs ripgrep: which to use
      • grep how-to guides
        • How to combine grep with find, awk, and xargs
        • How to filter log files with grep
        • How to use grep with regular expressions
        • How to search for a string in multiple files with grep
      • grep flags and regex reference
      • grep troubleshooting
        • grep: Binary file matches
        • grep: Invalid regular expression
        • grep: No such file or directory
    • host
      • host explanations
        • host vs dig vs nslookup: which DNS tool to use
      • host how-to guides
        • How to check DNS records with host
      • host troubleshooting
        • host: connection timed out; no servers could be reached
    • ipconfig
      • ipconfig explanations
      • ipconfig how-to guides
        • How to find your IP address with ipconfig
        • How to find your MAC address with ipconfig
        • How to parse ipconfig output with PHP
        • How to save ipconfig output to a text file
      • ipconfig command reference
      • ipconfig command snippets
      • ipconfig troubleshooting
        • ipconfig: Unable to contact your DHCP server
        • ipconfig: Default gateway is blank or missing
        • ipconfig: IPv4 address is missing or shows 0.0.0.0
        • ipconfig: The operation failed as no adapter is in the state permissible for this operation
    • iptables / nftables
      • iptables explanations
        • iptables vs nftables: key differences and migration
      • iptables how-to guides
        • How to migrate iptables rules to nftables
        • How to persist firewall rules across reboots
        • How to forward a port with iptables
        • How to rate-limit connections with iptables
      • iptables and nftables commands reference
      • iptables command snippets
      • iptables troubleshooting
        • iptables: Docker bypasses firewall rules
        • iptables: rules lost after reboot
      • iptables tutorials
        • iptables tutorial: configure a Linux firewall from scratch
    • Logrotate
      • Logrotate how-to guides
        • How to avoid Apache restart during Logrotate rotation
        • How to check Logrotate status
        • How to install Logrotate on Ubuntu
        • How to move rotated logs to a different folder with Logrotate
        • How to remove old log files with Logrotate
        • How to set maximum log file size with Logrotate
        • How to add timestamps to rotated log filenames with Logrotate
      • Logrotate directives reference
      • Logrotate command snippets
      • Logrotate troubleshooting
        • Logrotate: lines must begin with a keyword or a filename
        • Logrotate: logs are not rotating
        • Logrotate: Permission denied
      • Logrotate tutorials
        • Logrotate tutorial: configure log rotation from scratch
    • MySQL / MariaDB CLI
      • MySQL how-to guides
        • How to back up and restore a MySQL database with mysqldump
        • How to check and repair MySQL tables
        • How to import a large SQL file into MySQL
        • How to reset the MySQL root password
      • MySQL CLI and mysqldump reference
      • MySQL troubleshooting
        • MySQL: ERROR 1045 (28000): Access denied for user
        • MySQL: ERROR 1049 (42000): Unknown database
        • MySQL: ERROR 2002 (HY000): Can't connect to local MySQL server through socket
        • MySQL: ERROR 2003 (HY000): Can't connect to MySQL server on host
        • MySQL: Table is marked as crashed and should be repaired
    • Nginx
      • nginx.conf
        • nginx.conf best practices
        • nginx.conf explanations
        • nginx.conf how-to guides
          • How to change file upload size in nginx.conf
          • How to host multiple domains on one server in nginx.conf
          • How to disable server_tokens in nginx.conf
        • nginx.conf snippets
        • nginx.conf troubleshooting
          • Nginx: connect() to php-fpm.sock failed (13: Permission denied)
          • Nginx: connection reset by peer while reading upstream
          • Nginx downloads PHP files instead of executing them
          • Nginx: 403 Forbidden
          • Nginx: 502 Bad Gateway
          • Nginx: 504 Gateway Timeout
          • Nginx: upstream sent too big header while reading response header
        • nginx.conf tutorials
          • Nginx tutorial: configure request logging
          • Nginx tutorial: secure a web server
    • nslookup
      • nslookup explanations
      • nslookup how-to guides
        • How to change the timeout interval with nslookup
        • How to check DNS records with nslookup
        • How to check MX records with nslookup
        • How to check PTR records with nslookup
        • How to install nslookup on Ubuntu
        • How to perform a reverse DNS lookup with nslookup
        • How to specify a DNS server with nslookup
        • How to use debug mode with nslookup
      • nslookup command reference
      • nslookup command snippets
      • nslookup tutorials
        • nslookup tutorial: interactive mode
    • OpenSSL
      • OpenSSL how-to guides
        • How to check a website's SSL certificate with OpenSSL
        • How to convert certificate formats with OpenSSL
        • How to generate a self-signed certificate with OpenSSL
        • How to verify a certificate chain with OpenSSL
      • OpenSSL command reference
      • OpenSSL troubleshooting
        • OpenSSL: certificate has expired
        • OpenSSL: self-signed certificate in certificate chain
        • OpenSSL: unable to get local issuer certificate
        • OpenSSL: wrong version number
    • phpMyAdmin
      • phpMyAdmin best practices
      • phpMyAdmin reference
      • phpMyAdmin troubleshooting
      • phpMyAdmin tutorials
        • phpMyAdmin tutorial: create and manage databases
        • phpMyAdmin tutorial: install and configure
        • phpMyAdmin tutorial: advanced operations
        • phpMyAdmin tutorial: build a student information system
    • ping
      • ping explanations
        • ping vs traceroute: when to use which
      • ping how-to guides
        • How to test network connectivity with ping
      • ping troubleshooting
        • ping: Destination Host Unreachable
    • Rsync
      • Rsync explanations
        • Rsync vs SCP: which to use for recurring transfers
      • Rsync how-to guides
        • How to copy files and folders with Rsync
        • How to create a destination folder with Rsync
        • How to install Rsync
        • How to schedule Rsync via cron job
        • How to run Rsync through SSH tunnel
      • Rsync flags and options reference
      • Rsync command snippets
      • Rsync troubleshooting
        • Rsync: failed to set permissions on
        • Rsync: failed to set times on
        • Rsync: error in rsync protocol data stream
        • Rsync: transfer hangs or freezes
    • sed
      • sed explanations
        • GNU sed vs BSD sed: key differences
      • sed how-to guides
        • How to use sed with regex groups and back-references
        • How to remove comments from a config file with sed
        • How to replace text in multiple files with sed
      • sed commands and flags reference
      • sed command snippets
      • sed troubleshooting
        • sed: macOS in-place edit fails with extra characters error
        • sed: unknown command
    • SEO Bots
      • robots.txt
        • robots.txt best practices
        • robots.txt snippets
    • SSH
      • SSH how-to guides
        • How to copy files over SSH with SCP
        • How to set up SSH key-based authentication
        • How to use SSH config for multiple servers
        • How to create an SSH tunnel for port forwarding
      • SSH config directives reference
      • SSH troubleshooting
        • SSH: Connection refused
        • SSH: Connection timed out
        • SSH: Host key verification failed
        • SSH: Permission denied (publickey)
        • SSH: Too many authentication failures
    • systemd (systemctl / journalctl)
      • systemd best practices
      • systemd explanations
        • systemd timers vs cron: when to use which
      • systemd how-to guides
        • How to create a custom service unit with systemd
        • How to debug a failing service with systemd
        • How to override a packaged unit file with systemd drop-ins
        • How to replace a cron job with a systemd timer
        • How to set resource limits for a service with systemd
        • How to view logs for a specific service with journalctl
      • systemd unit file directives reference
      • systemd command snippets
      • systemd troubleshooting
        • systemd: control process exited with error code
        • systemd: A dependency job failed
        • systemd: service exits immediately after starting
        • systemd: Failed to start {service}
        • systemd: unit is masked
      • systemd tutorials
        • systemd tutorial: manage services from scratch
    • tcpdump
      • tcpdump explanations
        • tcpdump vs Wireshark: when to use which
      • tcpdump how-to guides
        • How to capture traffic between two specific hosts with tcpdump
        • How to capture HTTP traffic with tcpdump
        • How to debug DNS queries with tcpdump
        • How to rotate capture files with tcpdump
      • tcpdump flags and BPF filter reference
      • tcpdump command snippets
      • tcpdump troubleshooting
        • tcpdump: No suitable device found
        • tcpdump: permission denied
    • Traceroute
      • Traceroute explanations
      • Traceroute how-to guides
        • How to Use Traceroute with IPv6
        • How to Read Traceroute Results
      • Traceroute command reference
      • Traceroute command snippets
      • Traceroute troubleshooting
        • Traceroute: !A (Administratively prohibited)
        • Traceroute: !P (Incompatible protocol)
        • Traceroute: !N (Network unreachable)
    • UFW (Uncomplicated Firewall)
      • UFW explanations
        • UFW vs iptables vs nftables: when to use which
      • UFW how-to guides
        • How to allow traffic from a specific IP address with UFW
        • How to allow a specific port through UFW
        • How to recover from UFW SSH lockout
        • How to set up UFW with Nginx
      • UFW troubleshooting
        • UFW: connection refused after enabling
        • UFW: Docker bypasses UFW rules
        • UFW: rules not taking effect
    • WireGuard
      • WireGuard explanations
        • WireGuard vs OpenVPN: when to use which
      • WireGuard how-to guides
        • How to configure a WireGuard client
        • How to route all traffic through a WireGuard tunnel
        • How to set up a WireGuard VPN server on Ubuntu
      • WireGuard configuration directives reference
      • WireGuard command snippets
      • WireGuard troubleshooting
        • WireGuard: DNS resolution fails over tunnel
        • WireGuard: no handshake between peers
        • WireGuard: no internet access through tunnel
    • XAMPP
      • XAMPP how-to guides
        • How to set up Apache virtual hosts in XAMPP
        • How to install XAMPP on Windows
        • How to install WordPress with XAMPP
        • How to locate the MariaDB error log in XAMPP
        • How to locate the PHP error log in XAMPP
        • How to locate php.ini in XAMPP
        • How to access the MariaDB command line in XAMPP
        • How to reset the MariaDB password in XAMPP
      • XAMPP troubleshooting
        • XAMPP: Apache shutdown unexpectedly
        • XAMPP: MySQL shutdown unexpectedly
      • XAMPP tutorials
        • XAMPP tutorial: access localhost from another device
        • XAMPP tutorial: run multiple PHP versions on Windows
  • Guides
    • How to debug DNS issues with dig, nslookup, and traceroute
    • How to set up a local development environment with XAMPP and phpMyAdmin
    • How to manage web server logs with Logrotate and Nginx
    • How to set up a production web server with Nginx, SSL, and CORS
  • Meta
    • Changelog
    • Contributing to the Console9 Wiki
  • Glossary
  • Console9
  • Wiki
  • Articles
  • CORS (Cross-Origin Resource Sharing)
  • CORS how-to guides
Console9
Console9 Wiki
  • Articles
    • Ansible
      • Ansible best practices
      • Ansible explanations
        • Ansible vs Terraform: when to use which
      • Ansible how-to guides
        • How to deploy files with Ansible templates
        • How to set up Ansible inventory for multiple environments
        • How to use Ansible Vault for secret management
      • Ansible playbook directives and modules reference
      • Ansible command snippets
      • Ansible troubleshooting
        • Ansible: Permission denied
        • Ansible: UNREACHABLE host
      • Ansible tutorials
        • Ansible tutorial: automate server setup from scratch
    • Apache HTTP Server
      • .htaccess
        • .htaccess best practices
        • .htaccess explanations
        • .htaccess how-to guides
          • How to set up authentication with .htaccess
          • How to locate the .htaccess file
        • .htaccess snippets
        • .htaccess troubleshooting
          • Apache .htaccess: 403 Forbidden
          • Apache .htaccess: 500 Internal Server Error
        • .htaccess tutorials
    • awk
      • awk explanations
        • awk vs sed vs grep: when to use which
      • awk how-to guides
        • How to count occurrences with awk
        • How to extract columns from CSV files with awk
        • How to parse Nginx access logs with awk
      • awk built-in variables and functions reference
      • awk command snippets
      • awk troubleshooting
        • awk: syntax error at source line
        • awk: wrong output from incorrect field separator
    • BeautifulSoup (bs4)
      • BeautifulSoup best practices
      • BeautifulSoup explanations
      • BeautifulSoup snippets
      • BeautifulSoup troubleshooting
      • BeautifulSoup tutorials
        • BeautifulSoup tutorial: scrape authenticated pages with session cookies
        • BeautifulSoup tutorial: scrape e-commerce product data to CSV
        • BeautifulSoup tutorial: scrape a website for links, titles, and navigation
    • Certbot
      • Certbot how-to guides
        • How to set up automatic certificate renewal with Certbot
        • How to issue an SSL certificate with Certbot for Apache
        • How to issue an SSL certificate with Certbot for Nginx
        • How to issue a wildcard SSL certificate with Certbot DNS challenge
      • Certbot troubleshooting
        • Certbot: Some challenges have failed
        • Certbot: Connection refused during ACME challenge
        • Certbot: The requested nginx plugin does not appear to be installed
        • Certbot: Certificate not yet due for renewal
        • Certbot: Too many certificates already issued
    • CORS (Cross-Origin Resource Sharing)
      • CORS best practices
      • CORS how-to guides
        • How to configure CORS on Amazon S3
        • How to configure CORS on Apache HTTP Server
        • How to configure CORS on Nginx
        • How to configure CORS in Node.js with Express
        • How to configure CORS in PHP
        • How to configure CORS in Python Django
        • How to configure CORS in Python Flask
      • CORS headers reference
      • CORS troubleshooting
        • CORS: Cross origin requests are only supported for HTTP
        • CORS: No 'Access-Control-Allow-Origin' header is present on the requested resource
        • CORS: Origin is not allowed by Access-Control-Allow-Origin
      • CORS tutorials
        • CORS tutorial: How Cross-Origin Resource Sharing works
    • Crontab
      • Crontab how-to guides
        • How to schedule a script with crontab
      • Crontab expression reference
      • Crontab troubleshooting
        • Crontab: job not running
    • curl
      • curl explanations
        • curl vs wget: when to use which
      • curl how-to guides
        • How to send authenticated requests with curl
        • How to follow redirects with curl
        • How to use curl with a proxy server
        • How to upload a file with curl
      • curl flags and options reference
      • curl command snippets
      • curl troubleshooting
        • curl: (7) Failed to connect — Connection refused
        • curl: (56) Recv failure: Connection reset by peer
        • curl: (28) Operation timed out
        • curl: (60) SSL certificate problem: unable to get local issuer certificate
    • dig
      • dig Explanations
      • dig How-To Guides
        • How to Set Default Options with the .digrc File
        • How to Trace the DNS Delegation Path with dig
        • How to Look Up a Domain by IP Address with dig
        • How to Find a Domain IP Address with dig
        • How to Query a Domain Using a Specific DNS Server with dig
        • How to Query DNS Records with dig
      • dig Command Reference
      • dig Command Snippets
    • Docker
      • Docker explanations
        • Docker volumes vs bind mounts: when to use which
      • Docker how-to guides
        • How to debug a crashing Docker container
        • How to fix Docker bypassing UFW firewall rules
        • How to persist MySQL data with Docker volumes
        • How to run Nginx with Docker and Docker Compose
      • Docker troubleshooting
        • Docker: bind mount permission denied
        • Docker Compose: depends_on does not wait for service to be ready
        • Docker: network not found
        • Docker: no space left on device
        • Docker: permission denied while trying to connect to the Docker daemon socket
        • Docker: port is already allocated
    • Fail2Ban
      • Fail2Ban best practices
      • Fail2Ban how-to guides
        • How to configure Fail2Ban with UFW
        • How to create a custom Fail2Ban filter
        • How to protect Nginx with a Fail2Ban jail
        • How to whitelist IPs in Fail2Ban
      • Fail2Ban jail.local directives reference
      • Fail2Ban command snippets
      • Fail2Ban troubleshooting
        • Fail2Ban: bans not blocking traffic
        • Fail2Ban: iptables not found
        • Fail2Ban: locked out of own server
        • Fail2Ban: not detecting failed logins
      • Fail2Ban tutorials
        • Fail2Ban tutorial: install and configure from scratch
    • Git
      • Git explanations
        • Git rebase vs merge: when to use which
      • Git how-to guides
        • How to use .gitignore to exclude files
        • How to resolve a merge conflict in Git
        • How to revert a commit in Git
        • How to track server configs with Git
      • Git commands and flags reference
      • Git command snippets
      • Git troubleshooting
        • Git: HEAD detached at commit
        • Git: error: failed to push some refs
        • Git: CONFLICT (content): Merge conflict in file
        • Git: fatal: not a git repository
      • Git tutorials
        • Git tutorial: version control for sysadmins
    • grep
      • grep explanations
        • grep vs egrep vs fgrep vs ripgrep: which to use
      • grep how-to guides
        • How to combine grep with find, awk, and xargs
        • How to filter log files with grep
        • How to use grep with regular expressions
        • How to search for a string in multiple files with grep
      • grep flags and regex reference
      • grep troubleshooting
        • grep: Binary file matches
        • grep: Invalid regular expression
        • grep: No such file or directory
    • host
      • host explanations
        • host vs dig vs nslookup: which DNS tool to use
      • host how-to guides
        • How to check DNS records with host
      • host troubleshooting
        • host: connection timed out; no servers could be reached
    • ipconfig
      • ipconfig explanations
      • ipconfig how-to guides
        • How to find your IP address with ipconfig
        • How to find your MAC address with ipconfig
        • How to parse ipconfig output with PHP
        • How to save ipconfig output to a text file
      • ipconfig command reference
      • ipconfig command snippets
      • ipconfig troubleshooting
        • ipconfig: Unable to contact your DHCP server
        • ipconfig: Default gateway is blank or missing
        • ipconfig: IPv4 address is missing or shows 0.0.0.0
        • ipconfig: The operation failed as no adapter is in the state permissible for this operation
    • iptables / nftables
      • iptables explanations
        • iptables vs nftables: key differences and migration
      • iptables how-to guides
        • How to migrate iptables rules to nftables
        • How to persist firewall rules across reboots
        • How to forward a port with iptables
        • How to rate-limit connections with iptables
      • iptables and nftables commands reference
      • iptables command snippets
      • iptables troubleshooting
        • iptables: Docker bypasses firewall rules
        • iptables: rules lost after reboot
      • iptables tutorials
        • iptables tutorial: configure a Linux firewall from scratch
    • Logrotate
      • Logrotate how-to guides
        • How to avoid Apache restart during Logrotate rotation
        • How to check Logrotate status
        • How to install Logrotate on Ubuntu
        • How to move rotated logs to a different folder with Logrotate
        • How to remove old log files with Logrotate
        • How to set maximum log file size with Logrotate
        • How to add timestamps to rotated log filenames with Logrotate
      • Logrotate directives reference
      • Logrotate command snippets
      • Logrotate troubleshooting
        • Logrotate: lines must begin with a keyword or a filename
        • Logrotate: logs are not rotating
        • Logrotate: Permission denied
      • Logrotate tutorials
        • Logrotate tutorial: configure log rotation from scratch
    • MySQL / MariaDB CLI
      • MySQL how-to guides
        • How to back up and restore a MySQL database with mysqldump
        • How to check and repair MySQL tables
        • How to import a large SQL file into MySQL
        • How to reset the MySQL root password
      • MySQL CLI and mysqldump reference
      • MySQL troubleshooting
        • MySQL: ERROR 1045 (28000): Access denied for user
        • MySQL: ERROR 1049 (42000): Unknown database
        • MySQL: ERROR 2002 (HY000): Can't connect to local MySQL server through socket
        • MySQL: ERROR 2003 (HY000): Can't connect to MySQL server on host
        • MySQL: Table is marked as crashed and should be repaired
    • Nginx
      • nginx.conf
        • nginx.conf best practices
        • nginx.conf explanations
        • nginx.conf how-to guides
          • How to change file upload size in nginx.conf
          • How to host multiple domains on one server in nginx.conf
          • How to disable server_tokens in nginx.conf
        • nginx.conf snippets
        • nginx.conf troubleshooting
          • Nginx: connect() to php-fpm.sock failed (13: Permission denied)
          • Nginx: connection reset by peer while reading upstream
          • Nginx downloads PHP files instead of executing them
          • Nginx: 403 Forbidden
          • Nginx: 502 Bad Gateway
          • Nginx: 504 Gateway Timeout
          • Nginx: upstream sent too big header while reading response header
        • nginx.conf tutorials
          • Nginx tutorial: configure request logging
          • Nginx tutorial: secure a web server
    • nslookup
      • nslookup explanations
      • nslookup how-to guides
        • How to change the timeout interval with nslookup
        • How to check DNS records with nslookup
        • How to check MX records with nslookup
        • How to check PTR records with nslookup
        • How to install nslookup on Ubuntu
        • How to perform a reverse DNS lookup with nslookup
        • How to specify a DNS server with nslookup
        • How to use debug mode with nslookup
      • nslookup command reference
      • nslookup command snippets
      • nslookup tutorials
        • nslookup tutorial: interactive mode
    • OpenSSL
      • OpenSSL how-to guides
        • How to check a website's SSL certificate with OpenSSL
        • How to convert certificate formats with OpenSSL
        • How to generate a self-signed certificate with OpenSSL
        • How to verify a certificate chain with OpenSSL
      • OpenSSL command reference
      • OpenSSL troubleshooting
        • OpenSSL: certificate has expired
        • OpenSSL: self-signed certificate in certificate chain
        • OpenSSL: unable to get local issuer certificate
        • OpenSSL: wrong version number
    • phpMyAdmin
      • phpMyAdmin best practices
      • phpMyAdmin reference
      • phpMyAdmin troubleshooting
      • phpMyAdmin tutorials
        • phpMyAdmin tutorial: create and manage databases
        • phpMyAdmin tutorial: install and configure
        • phpMyAdmin tutorial: advanced operations
        • phpMyAdmin tutorial: build a student information system
    • ping
      • ping explanations
        • ping vs traceroute: when to use which
      • ping how-to guides
        • How to test network connectivity with ping
      • ping troubleshooting
        • ping: Destination Host Unreachable
    • Rsync
      • Rsync explanations
        • Rsync vs SCP: which to use for recurring transfers
      • Rsync how-to guides
        • How to copy files and folders with Rsync
        • How to create a destination folder with Rsync
        • How to install Rsync
        • How to schedule Rsync via cron job
        • How to run Rsync through SSH tunnel
      • Rsync flags and options reference
      • Rsync command snippets
      • Rsync troubleshooting
        • Rsync: failed to set permissions on
        • Rsync: failed to set times on
        • Rsync: error in rsync protocol data stream
        • Rsync: transfer hangs or freezes
    • sed
      • sed explanations
        • GNU sed vs BSD sed: key differences
      • sed how-to guides
        • How to use sed with regex groups and back-references
        • How to remove comments from a config file with sed
        • How to replace text in multiple files with sed
      • sed commands and flags reference
      • sed command snippets
      • sed troubleshooting
        • sed: macOS in-place edit fails with extra characters error
        • sed: unknown command
    • SEO Bots
      • robots.txt
        • robots.txt best practices
        • robots.txt snippets
    • SSH
      • SSH how-to guides
        • How to copy files over SSH with SCP
        • How to set up SSH key-based authentication
        • How to use SSH config for multiple servers
        • How to create an SSH tunnel for port forwarding
      • SSH config directives reference
      • SSH troubleshooting
        • SSH: Connection refused
        • SSH: Connection timed out
        • SSH: Host key verification failed
        • SSH: Permission denied (publickey)
        • SSH: Too many authentication failures
    • systemd (systemctl / journalctl)
      • systemd best practices
      • systemd explanations
        • systemd timers vs cron: when to use which
      • systemd how-to guides
        • How to create a custom service unit with systemd
        • How to debug a failing service with systemd
        • How to override a packaged unit file with systemd drop-ins
        • How to replace a cron job with a systemd timer
        • How to set resource limits for a service with systemd
        • How to view logs for a specific service with journalctl
      • systemd unit file directives reference
      • systemd command snippets
      • systemd troubleshooting
        • systemd: control process exited with error code
        • systemd: A dependency job failed
        • systemd: service exits immediately after starting
        • systemd: Failed to start {service}
        • systemd: unit is masked
      • systemd tutorials
        • systemd tutorial: manage services from scratch
    • tcpdump
      • tcpdump explanations
        • tcpdump vs Wireshark: when to use which
      • tcpdump how-to guides
        • How to capture traffic between two specific hosts with tcpdump
        • How to capture HTTP traffic with tcpdump
        • How to debug DNS queries with tcpdump
        • How to rotate capture files with tcpdump
      • tcpdump flags and BPF filter reference
      • tcpdump command snippets
      • tcpdump troubleshooting
        • tcpdump: No suitable device found
        • tcpdump: permission denied
    • Traceroute
      • Traceroute explanations
      • Traceroute how-to guides
        • How to Use Traceroute with IPv6
        • How to Read Traceroute Results
      • Traceroute command reference
      • Traceroute command snippets
      • Traceroute troubleshooting
        • Traceroute: !A (Administratively prohibited)
        • Traceroute: !P (Incompatible protocol)
        • Traceroute: !N (Network unreachable)
    • UFW (Uncomplicated Firewall)
      • UFW explanations
        • UFW vs iptables vs nftables: when to use which
      • UFW how-to guides
        • How to allow traffic from a specific IP address with UFW
        • How to allow a specific port through UFW
        • How to recover from UFW SSH lockout
        • How to set up UFW with Nginx
      • UFW troubleshooting
        • UFW: connection refused after enabling
        • UFW: Docker bypasses UFW rules
        • UFW: rules not taking effect
    • WireGuard
      • WireGuard explanations
        • WireGuard vs OpenVPN: when to use which
      • WireGuard how-to guides
        • How to configure a WireGuard client
        • How to route all traffic through a WireGuard tunnel
        • How to set up a WireGuard VPN server on Ubuntu
      • WireGuard configuration directives reference
      • WireGuard command snippets
      • WireGuard troubleshooting
        • WireGuard: DNS resolution fails over tunnel
        • WireGuard: no handshake between peers
        • WireGuard: no internet access through tunnel
    • XAMPP
      • XAMPP how-to guides
        • How to set up Apache virtual hosts in XAMPP
        • How to install XAMPP on Windows
        • How to install WordPress with XAMPP
        • How to locate the MariaDB error log in XAMPP
        • How to locate the PHP error log in XAMPP
        • How to locate php.ini in XAMPP
        • How to access the MariaDB command line in XAMPP
        • How to reset the MariaDB password in XAMPP
      • XAMPP troubleshooting
        • XAMPP: Apache shutdown unexpectedly
        • XAMPP: MySQL shutdown unexpectedly
      • XAMPP tutorials
        • XAMPP tutorial: access localhost from another device
        • XAMPP tutorial: run multiple PHP versions on Windows
  • Guides
    • How to debug DNS issues with dig, nslookup, and traceroute
    • How to set up a local development environment with XAMPP and phpMyAdmin
    • How to manage web server logs with Logrotate and Nginx
    • How to set up a production web server with Nginx, SSL, and CORS
  • Meta
    • Changelog
    • Contributing to the Console9 Wiki
  • Glossary

CORS how-to guides

  • How to configure CORS on Amazon S3
  • How to configure CORS on Apache HTTP Server
  • How to configure CORS on Nginx
  • How to configure CORS in Node.js with Express
  • How to configure CORS in PHP
  • How to configure CORS in Python Django
  • How to configure CORS in Python Flask

Step-by-step guides for configuring Cross-Origin Resource Sharing (CORS) on Apache, Nginx, Node.js, PHP, Python Django, Flask, and Amazon S3.

© 2026 - Console9